A Message
represents an routable piece of information.
The content for a message is automatically encoded and decoded.
Creates a new instance of Message
.
:content - The content.
message = Qpid::Messaging::Message.new :content => "This is a message."
# File lib/qpid/message.rb, line 42 def initialize(args = {}) @message_impl = (args[:impl] if args[:impl]) || nil @message_impl = Cqpid::Message.new if @message_impl.nil? @content = nil args = {} if args.nil? self.content = args[:content] if args[:content] end
Returns the value for the named property.
name - the property name
# use of message properties to mark a message as digitally signed verify(msg) if msg[:signed]
# File lib/qpid/message.rb, line 284 def [](key); self.properties[key.to_s]; end
Assigns a value to the named property.
NOTE: Both the key or the value may be a symbol, but they
will both be converted to a String
for ease of transport.
name - the property name
value - the property value
# File lib/qpid/message.rb, line 295 def []=(key, value); @message_impl.setProperty(key.to_s, value.to_s); end
Returns the content of the Message
.
Content is automatically decoded based on the specified content type. If
the content type is application-specific, then no decoding is performed and
the content is returnedas a String
representation.
For example, if an array of integers are sent, then the receiver will find the message content to be an array of String objects, where each String is a representation of the sent integer value.
# File lib/qpid/message.rb, line 344 def content if @content.nil? @content = @message_impl.getContent # decode the content is necessary if it # has an encoded content type if ["amqp/list", "amqp/map"].include? @message_impl.getContentType @content = Qpid::Messaging.decode(self, @message_impl.getContentType) end end @content end
Sets the content for the Message
.
Content is automatically encoded for Array and Hash types. Other types need
to set their own content types (via content_type
) in order to
specify how recipients should process the content.
content - the content
msg.content = "This is a simple message." # a simple message msg.content = {:foo => :bar} # content is automatically encoded
# File lib/qpid/message.rb, line 312 def content=(content) content_type = nil @content = content case @content when Hash content_type = "amqp/map" new_content = {} content.each_pair{|key, value| new_content[key.to_s] = value.to_s} @content = new_content when Array new_content = [] content_type = "amqp/list" content.each {|element| new_content << element.to_s} @content = new_content end if content_type.nil? @message_impl.setContent @content else Qpid::Messaging.encode @content, self, content_type end end
Returns the content's size.
# File lib/qpid/message.rb, line 361 def content_size; @message_impl.getContentSize; end
Returns the content type for the Message
.
case msg.content_type when "myapp/image" ctl.handle_image msg end when "myapp/audio" ctl.handle_audio msg end end
# File lib/qpid/message.rb, line 127 def content_type; @message_impl.getContentType; end
Sets the content type for the Message
.
This should be set by the sending applicaton and indicates to recipients of the message how to interpret or decode the content.
By default, only dictionaries and maps are automatically given a content type. If this content type is replaced then retrieving the content will not behave correctly.
#content_type - the content type.
# File lib/qpid/message.rb, line 112 def content_type=(content_type); @message_impl.setContentType content_type; end
Returns the correlation id of the Message
.
NOTE: See correlation_id=
for details.
# File lib/qpid/message.rb, line 192 def correlation_id; @message_impl.getCorrelationId; end
Sets the correlation id of the Message
.
The correlation id can be used as part of a protocol for message exchange patterns; e.g., a requestion-response pattern might require the correlation id of the request and the response to match, or it might use the message id of the request as the correlation id on the response
NOTE: If the id is not a String
then the id
is setup using the object's string representation.
id - the id
# File lib/qpid/message.rb, line 186 def correlation_id=(correlation_id); @message_impl.setCorrelationId correlation_id; end
Returns the durability for the Message
.
# File lib/qpid/message.rb, line 244 def durable; @message_impl.getDurable; end
Sets the durability of the Message
.
This is a hint to the messaging infrastructure that the message should be persisted or otherwise stored. This helps to ensure that th emessage is not lost during to failures or a shutdown.
durable - the durability flag (def. false)
# File lib/qpid/message.rb, line 240 def durable=(durable); @message_impl.setDurable durable; end
Returns the message id.
See message_id=
for details.
# File lib/qpid/message.rb, line 146 def message_id; @message_impl.getMessageId; end
Sets the message id.
NOTE: this field must be a UUID type currently. A non-UUID value will be converted to a zero UUID, though a blank ID will be left untouched.
id - the id
# File lib/qpid/message.rb, line 141 def message_id=(message_id); @message_impl.setMessageId message_id.to_s; end
Returns the priority for the Message
.
# File lib/qpid/message.rb, line 211 def priority; @message_impl.getPriority; end
Sets the priority of the Message
.
This may be used by the messaging infrastructure to prioritize delivery of messages with higher priority.
NOTE: If the priority is not an integer type then it is set using the object's integer representation. If the integer value is greater than 8-bits then only the first 8-bits are used.
priority - the priority
# File lib/qpid/message.rb, line 207 def priority=(priority); @message_impl.setPriority priority; end
Returns all named properties.
NOTE: It is recommended to use the []= method for retrieving and setting properties. Using this method may result in non-deterministic behavior.
# File lib/qpid/message.rb, line 271 def properties; @message_impl.getProperties; end
Returns whether the Message
has been marked as redelivered.
# File lib/qpid/message.rb, line 263 def redelivered; @message_impl.getRedelivered; end
This is a hint to the messaging infrastructure that if de-duplication is required, that this message should be examined to determine if it is a duplicate.
redelivered - sets the redelivered state (def. false)
# processed is an array of processed message ids msg.redelivered = true if processed.include? msg.message_id
# File lib/qpid/message.rb, line 259 def redelivered=(redelivered); @message_impl.setRedelivered redelivered; end
Returns the reply to address for the Message
.
# File lib/qpid/message.rb, line 73 def reply_to address_impl = @message_impl.getReplyTo # only return an address if a reply to was specified Qpid::Messaging::Address.new(nil, nil, nil, nil, address_impl) if address_impl end
Sets the address to which replies should be sent for the
Message
.
NOTE: The address must be an instance of Address.
address - an instance of Address
msg.reply_to = Qpid:Messaging::Address.new "my-responses"
# File lib/qpid/message.rb, line 66 def reply_to=(address) raise ArgumentError, "Agument must be an Address" unless address.is_a? Qpid::Messaging::Address @message_impl.setReplyTo address.address_impl end
Returns the subject of the Message
.
puts "The subject is #{msg.subject}"
# File lib/qpid/message.rb, line 97 def subject; @message_impl.getSubject; end
Sets the subject for the Message
.
subject - the subject
msg.subject = "mysubject"
# File lib/qpid/message.rb, line 89 def subject=(subject); @message_impl.setSubject subject; end
Returns the time-to-live in milliseconds.
# File lib/qpid/message.rb, line 228 def ttl; Qpid::Messaging::Duration.new @message_impl.getTtl.getMilliseconds; end
Sets the time-to-live in milliseconds.
duration - the number of milliseconds
# File lib/qpid/message.rb, line 219 def ttl=(duration) if duration.is_a? Qpid::Messaging::Duration @message_impl.setTtl duration.duration_impl else @message_impl.setTtl Cqpid::Duration.new duration.to_i end end
Returns the user id for the Message
.
See user_id=
for details.
# File lib/qpid/message.rb, line 169 def user_id; @message_impl.getUserId; end
Sets the user id for the Message
.
This should in general be the user-id which was used when authenticating the connection itself, as the messaging infrastructure will verify this.
See +Qpid::Messaging::Connection#authenticated_username+
NOTE: If the id is not a String
then the id
is set using the object's string representation.
id - the id
# File lib/qpid/message.rb, line 163 def user_id=(user_id); @message_impl.setUserId user_id; end