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 givenSectionto the internal collection of sections that will be sent to the remote peer when this message is encoded.Return the currentMessageAnnotationsassigned to this message, if none was assigned yet then this method returnsnull.annotations(MessageAnnotations messageAnnotations) Assign or replace theMessageAnnotationsinstance associated with this message.Return the currentApplicationPropertiesassigned to this message, if none was assigned yet then this method returnsnull.applicationProperties(ApplicationProperties applicationProperties) Assign or replace theApplicationPropertiesinstance associated with this message.Collection<Section<?>>Create and return an unmodifiableCollectionthat contains theSectioninstances currently assigned to this message.bodySections(Collection<Section<?>> sections) Sets the bodySectioninstances to use when encoding this message.Clears all current bodySectionelements from theAdvancedMessage.static <V> AdvancedMessage<V>create()Creates a newAdvancedMessageinstance using the library default implementation.default ProtonBufferEncodes theAdvancedMessagefor transmission by the client.encode(Map<String, Object> deliveryAnnotations, ProtonBufferAllocator allocator) Encodes theAdvancedMessagefor transmission by the client.footer()Return the currentFooterassigned to this message, if none was assigned yet then this method returnsnull.Assign or replace theFooterinstance associated with this message.forEachBodySection(Consumer<Section<?>> consumer) Performs the given action for each bodySectionof theAdvancedMessageuntil all sections have been presented to the givenConsumeror the consumer throws an exception.header()Return the currentHeaderassigned to this message, if none was assigned yet then this method returnsnull.Assign or replace theHeaderinstance associated with this message.intmessageFormat(int messageFormat) Sets the message format to use when the message is sent.Return the currentPropertiesassigned to this message, if none was assigned yet then this method returnsnull.properties(Properties properties) Assign or replace thePropertiesinstance 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 newAdvancedMessageinstance using the library default implementation.- Type Parameters:
V- The type to use when specifying the body section value type.- Returns:
- a new
AdvancedMessageinstance.
-
header
Return the currentHeaderassigned to this message, if none was assigned yet then this method returnsnull.- Returns:
- the currently assigned
Headerfor this message. - Throws:
ClientException- if an error occurs while retrieving the message data.
-
header
Assign or replace theHeaderinstance associated with this message.- Parameters:
header- TheHeadervalue to assign to this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing the messageHeadervalue.
-
annotations
Return the currentMessageAnnotationsassigned to this message, if none was assigned yet then this method returnsnull.- Returns:
- the currently assigned
MessageAnnotationsfor this message. - Throws:
ClientException- if an error occurs while retrieving the message data.
-
annotations
Assign or replace theMessageAnnotationsinstance associated with this message.- Parameters:
messageAnnotations- TheMessageAnnotationsvalue to assign to this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing the messageMessageAnnotationsvalue.
-
properties
Return the currentPropertiesassigned to this message, if none was assigned yet then this method returnsnull.- Returns:
- the currently assigned
Propertiesfor this message. - Throws:
ClientException- if an error occurs while retrieving the message data.
-
properties
Assign or replace thePropertiesinstance associated with this message.- Parameters:
properties- ThePropertiesvalue to assign to this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing the messagePropertiesvalue.
-
applicationProperties
Return the currentApplicationPropertiesassigned to this message, if none was assigned yet then this method returnsnull.- Returns:
- the currently assigned
ApplicationPropertiesfor this message. - Throws:
ClientException- if an error occurs while retrieving the message data.
-
applicationProperties
AdvancedMessage<E> applicationProperties(ApplicationProperties applicationProperties) throws ClientException Assign or replace theApplicationPropertiesinstance associated with this message.- Parameters:
applicationProperties- TheApplicationPropertiesvalue to assign to this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing the messageApplicationPropertiesvalue.
-
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
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while configuring the message format.
-
addBodySection
Adds the givenSectionto 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- TheSectioninstance to append to the internal collection.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing to the message body sections.
-
bodySections
Sets the bodySectioninstances 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- TheCollectionofSectioninstance to assign this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while writing to the message body sections.
-
bodySections
Create and return an unmodifiableCollectionthat contains theSectioninstances currently assigned to this message. Changes to this message body after calling this will not be reflected in the returned collection.- Returns:
- an unmodifiable
Collectionthat 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 bodySectionof theAdvancedMessageuntil all sections have been presented to the givenConsumeror the consumer throws an exception.- Parameters:
consumer- theConsumerthat will operate on each of the body sections in this message.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while iterating over the message data.
-
clearBodySections
Clears all current bodySectionelements from theAdvancedMessage.- Returns:
- this
AdvancedMessageinstance. - Throws:
ClientException- if an error occurs while clearing the message body sections.
-
encode
Encodes theAdvancedMessagefor transmission by the client. The providedDeliveryAnnotationscan be included or augmented by theAdvancedMessageimplementation 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- AMapof delivery annotation values that were requested to be included in the transmitted message.- Returns:
- the encoded form of this message in a
ProtonBufferinstance. - Throws:
ClientException- if an error occurs while encoding the message data.
-
encode
ProtonBuffer encode(Map<String, Object> deliveryAnnotations, ProtonBufferAllocator allocator) throws ClientExceptionEncodes theAdvancedMessagefor transmission by the client. The providedDeliveryAnnotationscan be included or augmented by theAdvancedMessageimplementation 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- AMapof 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
ProtonBufferinstance. - Throws:
ClientException- if an error occurs while encoding the message data.
-