Claus Ibsen created CAMEL-25957:
-----------------------------------
Summary: camel-azure-servicebus - the consumer gives the body as a
BinaryData that converts only to a String, so an unmarshal, a file or another
producer after it fails
Key: CAMEL-25957
URL: https://issues.apache.org/jira/browse/CAMEL-25957
Project: Camel
Issue Type: Bug
Components: camel-azure-servicebus
Affects Versions: 4.18.0, 4.22.0, 4.23.0
Reporter: Claus Ibsen
Fix For: 4.24.0
The azure-servicebus consumer sets the body to the BinaryData of the received
message ({{ServiceBusConsumer}}, main e6885df7894d, line 252), and the
component converts a BinaryData only to a String ({{ServiceBusTypeConverter}}
has {{toString(BinaryData)}} and {{toBinaryData(String)}}). There is no
converter to a byte[] or an InputStream, so a route that reads the message as
data, or writes it, fails:
* {{unmarshal: json}} after the consumer: {{NoTypeConversionAvailableException:
No type converter available to convert from type:
com.azure.core.util.BinaryData to the required type: java.io.InputStream}};
* {{to: file:...}}: {{GenericFileOperationFailedException: Cannot store file:
... No body available of type: java.io.InputStream but has type:
com.azure.core.util.BinaryData}};
* {{convertBodyTo: byte[]}}: {{InvalidPayloadException: No body available of
type: byte[] but has type: com.azure.core.util.BinaryData}}.
Checked on 4.24.0-SNAPSHOT with a BinaryData body and the converters of
camel-azure-servicebus on the classpath; no broker is needed, as the consumer
gives this body for every message. Such a route needs {{convertBodyTo: String}}
first. The documentation says "In the consumer, the returned message body will
be of type String" ({{azure-servicebus-component.adoc}} line 93).
*Proposed change*: add converters from BinaryData to byte[] ({{toBytes()}}) and
to InputStream ({{toStream()}}), and say in the documentation that the body is
a BinaryData.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)