Andrea Cosentino created CAMEL-24935:
----------------------------------------

             Summary: camel-pulsar - the producer replaces the message body 
with the MessageId
                 Key: CAMEL-24935
                 URL: https://issues.apache.org/jira/browse/CAMEL-24935
             Project: Camel
          Issue Type: Bug
          Components: camel-pulsar
            Reporter: Andrea Cosentino
            Assignee: Andrea Cosentino


h3. Summary

The producer overwrites the message body with the {{MessageId}} returned by the 
broker, so after a
{{to("pulsar:...")}} the original payload is gone for the rest of the route. 
This is neither documented
nor covered by a test.

h3. Details

{{PulsarProducer.process}}:

{code:java}
messageBuilder.sendAsync()
        .thenAccept(r -> exchange.getIn().setBody(r))
        .whenComplete(...)
{code}

{{r}} is the {{MessageId}} of the published message, and it replaces the IN 
body. Consequences for an
ordinary route:

* any step after the {{to}} sees a {{MessageId}} instead of the payload;
* {{.to("pulsar:a").to("pulsar:b")}} publishes a serialized {{MessageId}} to 
the second topic, because
  {{PulsarProducer.serialize}} falls back to Java serialization when no type 
converter applies.

Nothing in {{pulsar-component.adoc}} mentions it and no test asserts it, so it 
does not look like a
deliberate contract - but it has been the behaviour for a long time, so a 
change needs an upgrade-guide
entry.

h3. Proposed fix

Set the send result on the existing {{CamelPulsarMessageId}} header - the same 
header the consumer
already populates from {{Message.getMessageId()}} - and leave the body 
untouched, which is what every
other Camel producer does. Document the change in the 4.23 upgrade guide.

A route that today reads the {{MessageId}} from the body would have to read the 
header instead; that is
the compatibility cost, and it is worth confirming that trade is acceptable 
before merging.

----
_Reported by Claude Code on behalf of oscerd (Andrea Cosentino)._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to