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
public interface AdvancedMessage<E> extends Message<E>
Advanced AMQP Message object that provides a thin abstraction to raw AMQP types
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description AdvancedMessage<E>
addBodySection(Section<?> bodySection)
Adds the givenSection
to the internal collection of sections that will be sent to the remote peer when this message is encoded.MessageAnnotations
annotations()
Return the currentMessageAnnotations
assigned to this message, if none was assigned yet then this method returnsnull
.AdvancedMessage<E>
annotations(MessageAnnotations messageAnnotations)
Assign or replace theMessageAnnotations
instance associated with this message.ApplicationProperties
applicationProperties()
Return the currentApplicationProperties
assigned to this message, if none was assigned yet then this method returnsnull
.AdvancedMessage<E>
applicationProperties(ApplicationProperties applicationProperties)
Assign or replace theApplicationProperties
instance associated with this message.java.util.Collection<Section<?>>
bodySections()
Create and return an unmodifiableCollection
that contains theSection
instances currently assigned to this message.AdvancedMessage<E>
bodySections(java.util.Collection<Section<?>> sections)
Sets the bodySection
instances to use when encoding this message.AdvancedMessage<E>
clearBodySections()
Clears all current bodySection
elements from theAdvancedMessage
.static <V> AdvancedMessage<V>
create()
Creates a newAdvancedMessage
instance using the library default implementation.ProtonBuffer
encode(java.util.Map<java.lang.String,java.lang.Object> deliveryAnnotations)
Encodes theAdvancedMessage
for transmission by the client.Footer
footer()
Return the currentFooter
assigned to this message, if none was assigned yet then this method returnsnull
.AdvancedMessage<E>
footer(Footer footer)
Assign or replace theFooter
instance associated with this message.AdvancedMessage<E>
forEachBodySection(java.util.function.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
header()
Return the currentHeader
assigned to this message, if none was assigned yet then this method returnsnull
.AdvancedMessage<E>
header(Header header)
Assign or replace theHeader
instance associated with this message.int
messageFormat()
AdvancedMessage<E>
messageFormat(int messageFormat)
Sets the message format to use when the message is sent.Properties
properties()
Return the currentProperties
assigned to this message, if none was assigned yet then this method returnsnull
.AdvancedMessage<E>
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 Detail
-
create
static <V> AdvancedMessage<V> 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
Header header() throws ClientException
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
AdvancedMessage<E> header(Header header) throws ClientException
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
MessageAnnotations annotations() throws ClientException
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
AdvancedMessage<E> annotations(MessageAnnotations messageAnnotations) throws ClientException
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
Properties properties() throws ClientException
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
AdvancedMessage<E> properties(Properties properties) throws ClientException
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
ApplicationProperties applicationProperties() throws ClientException
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.
-
footer
Footer footer() throws ClientException
Return the currentFooter
assigned to this message, if none was assigned yet then this method returnsnull
.- Returns:
- the currently assigned
Footer
for this message. - Throws:
ClientException
- if an error occurs while retrieving the message data.
-
footer
AdvancedMessage<E> footer(Footer footer) throws ClientException
Assign or replace theFooter
instance associated with this message.- Parameters:
footer
- TheFooter
value to assign to this message.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while writing the messageFooter
value.
-
messageFormat
int messageFormat() throws ClientException
- Returns:
- the currently assigned message format for this message.
- Throws:
ClientException
- if an error occurs while retrieving the message data.
-
messageFormat
AdvancedMessage<E> messageFormat(int messageFormat) throws ClientException
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
AdvancedMessage<E> addBodySection(Section<?> bodySection) throws ClientException
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
AdvancedMessage<E> bodySections(java.util.Collection<Section<?>> sections) throws ClientException
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
java.util.Collection<Section<?>> bodySections() throws ClientException
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
AdvancedMessage<E> forEachBodySection(java.util.function.Consumer<Section<?>> consumer) throws ClientException
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
AdvancedMessage<E> clearBodySections() throws ClientException
Clears all current bodySection
elements from theAdvancedMessage
.- Returns:
- this
AdvancedMessage
instance. - Throws:
ClientException
- if an error occurs while clearing the message body sections.
-
encode
ProtonBuffer encode(java.util.Map<java.lang.String,java.lang.Object> deliveryAnnotations) throws ClientException
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.
-
-