Github user gemmellr commented on the pull request:
https://github.com/apache/qpid-proton/pull/54#issuecomment-171666793
Hi Sreeram
Expanding the Message[Impl] to support multiple body sections is something
that would be good to see done, but isn't something I've had time for
previously and I'm working on other things at the moment. Whilst this change
certainly works, I'm not sure the approach would fit in particularly well with
making those more general improvements.
It is worth noting that the Message[Impl] in proton-j is basically just a
helper in the end that you don't actually have to use, the actual message bytes
sent via the Delivery object can be generated in other ways.
In the mean time, with what is available now there are some ways I think
you could probably send multiple Data sections currently, for example:
- Use an Message object with any
headers/delivery-annotations/message-annotations/properties/application-properties
(and perhaps even the first data section set as the body), encode that.
- Encode subsequent data body sections and append to the previous bytes.
For the second bit above there would be various options, such as:
- Use a Message object with only a data body set, encode that and append to
previous bytes, repeating as needed for the n'th data section.
- Use the very confusingly named org.apache.qpid.proton.codec.Data (which
has nothing specifically to do with data sections) to write out all the data
sections as DescribedType's. We do something similar in a test peer for the JMS
client codebase, e.g at [1] it prepares an entire message this way with the
body content possibly being a DataDescribedType [2].
- Write a simple encoder to generate the data section bytes by writing out
the necessary descriptor + Binary format/length bytes followed by the content
bytes.
[1]
https://github.com/apache/qpid-jms/blob/2f3c1988606c215cca0bbb77d3462cdc15c36016/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java#L1443
[2]
https://github.com/apache/qpid-jms/blob/2f3c1988606c215cca0bbb77d3462cdc15c36016/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/describedtypes/sections/DataDescribedType.java
Note that [2] is using the symbolic descriptor, but for non-test code the
numeric descriptor would probably be preferred.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---