Package org.apache.qpid.protonj2.client
Interface AdvancedMessage<E>
- Type Parameters:
E
- The type of the message body that this message carries
- All Superinterfaces:
Message<E>
- All Known Subinterfaces:
StreamReceiverMessage
,StreamSenderMessage
- All Known Implementing Classes:
ClientMessage
,ClientStreamReceiverMessage
Advanced AMQP Message object that provides a thin abstraction to raw AMQP types
-
Method Summary
Modifier and TypeMethodDescriptionaddBodySection
(Section<?> bodySection) Adds the givenSection
to the internal collection of sections that will be sent to the remote peer when this message is encoded.Return the currentMessageAnnotations
assigned to this message, if none was assigned yet then this method returnsnull
.annotations
(MessageAnnotations messageAnnotations) Assign or replace theMessageAnnotations
instance associated with this message.Return the currentApplicationProperties
assigned to this message, if none was assigned yet then this method returnsnull
.applicationProperties
(ApplicationProperties applicationProperties) Assign or replace theApplicationProperties
instance associated with this message.Collection<Section<?>>
Create and return an unmodifiableCollection
that contains theSection
instances currently assigned to this message.bodySections
(Collection<Section<?>> sections) Sets the bodySection
instances to use when encoding this message.Clears all current bodySection
elements from theAdvancedMessage
.static <V> AdvancedMessage<V>
create()
Creates a newAdvancedMessage
instance using the library default implementation.default ProtonBuffer
Encodes theAdvancedMessage
for transmission by the client.encode
(Map<String, Object> deliveryAnnotations, ProtonBufferAllocator allocator) Encodes theAdvancedMessage
for transmission by the client.footer()
Return the currentFooter
assigned to this message, if none was assigned yet then this method returnsnull
.Assign or replace theFooter
instance associated with this message.forEachBodySection
(Consumer<Section<?>> consumer) Performs the given action for each bodySection
of theAdvancedMessage
until all sections have been presented to the givenConsumer
or the consumer throws an exception.header()
Return the currentHeader
assigned to this message, if none was assigned yet then this method returnsnull
.Assign or replace theHeader
instance associated with this message.int
messageFormat
(int messageFormat) Sets the message format to use when the message is sent.Return the currentProperties
assigned to this message, if none was assigned yet then this method returnsnull
.properties
(Properties properties) Assign or replace theProperties
instance associated with this message.Methods inherited from interface org.apache.qpid.protonj2.client.Message
absoluteExpiryTime, absoluteExpiryTime, annotation, annotation, body, body, contentEncoding, contentEncoding, contentType, contentType, correlationId, correlationId, creationTime, creationTime, deliveryCount, deliveryCount, durable, durable, firstAcquirer, firstAcquirer, footer, footer, forEachAnnotation, forEachFooter, forEachProperty, groupId, groupId, groupSequence, groupSequence, hasAnnotation, hasAnnotations, hasFooter, hasFooters, hasProperties, hasProperty, messageId, messageId, priority, priority, property, property, removeAnnotation, removeFooter, removeProperty, replyTo, replyTo, replyToGroupId, replyToGroupId, subject, subject, timeToLive, timeToLive, to, to, toAdvancedMessage, userId, userId
-
Method Details
-
create
Creates a newAdvancedMessage
instance using the library default implementation.- Type Parameters:
V
- The type to use when specifying the body section value type.- Returns:
- a new
AdvancedMessage
instance.
-
header
Return the currentHeader
assigned to this message, if none was assigned yet then this method returnsnull
.- Returns:
- the currently assigned
Header
for this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
header
Assign or replace theHeader
instance associated with this message.- Parameters:
header
- TheHeader
value to assign to this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing the messageHeader
value.
-
annotations
Return the currentMessageAnnotations
assigned to this message, if none was assigned yet then this method returnsnull
.- Returns:
- the currently assigned
MessageAnnotations
for this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
annotations
Assign or replace theMessageAnnotations
instance associated with this message.- Parameters:
messageAnnotations
- TheMessageAnnotations
value to assign to this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing the messageMessageAnnotations
value.
-
properties
Return the currentProperties
assigned to this message, if none was assigned yet then this method returnsnull
.- Returns:
- the currently assigned
Properties
for this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
properties
Assign or replace theProperties
instance associated with this message.- Parameters:
properties
- TheProperties
value to assign to this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing the messageProperties
value.
-
applicationProperties
Return the currentApplicationProperties
assigned to this message, if none was assigned yet then this method returnsnull
.- Returns:
- the currently assigned
ApplicationProperties
for this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
applicationProperties
AdvancedMessage<E> applicationProperties(ApplicationProperties applicationProperties) throws ClientException Assign or replace theApplicationProperties
instance associated with this message.- Parameters:
applicationProperties
- TheApplicationProperties
value to assign to this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing the messageApplicationProperties
value.
-
messageFormat
- Returns:
- the currently assigned message format for this message.
- Throws:
ClientException
- if an error occurs while retrieving the message data.
-
messageFormat
Sets the message format to use when the message is sent. The exact structure of a message, together with its encoding, is defined by the message format (default is the AMQP defined message format zero.This field MUST be specified for the first transfer of a multi-transfer message, if it is not set at the time of send of the first transfer the sender uses the AMQP default value of zero for this field.
The upper three octets of a message format code identify a particular message format. The lowest octet indicates the version of said message format. Any given version of a format is forwards compatible with all higher versions.
3 octets 1 octet +----------------+---------+ | message format | version | +----------------+---------+ | | msb lsb
- Parameters:
messageFormat
- The message format to encode into the transfer frame that carries the message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while configuring the message format.
-
addBodySection
Adds the givenSection
to the internal collection of sections that will be sent to the remote peer when this message is encoded. If a previous section was added by a call to theMessage.body(Object)
method it should be retained as the first element of the running list of body sections contained in this message.The implementation should make an attempt to validate that sections added are valid for the message format that is assigned when they are added.
- Parameters:
bodySection
- TheSection
instance to append to the internal collection.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing to the message body sections.
-
bodySections
Sets the bodySection
instances to use when encoding this message. The value given replaces any existing sections assigned to this message through theMessage.body(Object)
oraddBodySection(Section)
methods. Calling this method with a null or empty collection is equivalent to calling theclearBodySections()
method.- Parameters:
sections
- TheCollection
ofSection
instance to assign this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing to the message body sections.
-
bodySections
Create and return an unmodifiableCollection
that contains theSection
instances currently assigned to this message. Changes to this message body after calling this will not be reflected in the returned collection.- Returns:
- an unmodifiable
Collection
that is a view of the current sections assigned to this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
forEachBodySection
Performs the given action for each bodySection
of theAdvancedMessage
until all sections have been presented to the givenConsumer
or the consumer throws an exception.- Parameters:
consumer
- theConsumer
that will operate on each of the body sections in this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while iterating over the message data.
-
clearBodySections
Clears all current bodySection
elements from theAdvancedMessage
.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while clearing the message body sections.
-
encode
Encodes theAdvancedMessage
for transmission by the client. The providedDeliveryAnnotations
can be included or augmented by theAdvancedMessage
implementation based on the target message format. The implementation is responsible for ensuring that the delivery annotations are treated correctly encoded into the correct location in the message.- Parameters:
deliveryAnnotations
- AMap
of delivery annotation values that were requested to be included in the transmitted message.- Returns:
- the encoded form of this message in a
ProtonBuffer
instance. - Throws:
ClientException
- if an error occurs while encoding the message data.
-
encode
ProtonBuffer encode(Map<String, Object> deliveryAnnotations, ProtonBufferAllocator allocator) throws ClientExceptionEncodes theAdvancedMessage
for transmission by the client. The providedDeliveryAnnotations
can be included or augmented by theAdvancedMessage
implementation based on the target message format. The implementation is responsible for ensuring that the delivery annotations are treated correctly encoded into the correct location in the message.- Parameters:
deliveryAnnotations
- AMap
of delivery annotation values that were requested to be included in the transmitted message.allocator
- An allocator that should be used to create the buffer the message is encoded into.- Returns:
- the encoded form of this message in a
ProtonBuffer
instance. - Throws:
ClientException
- if an error occurs while encoding the message data.
-