[ 
https://issues.apache.org/jira/browse/CAMEL-10820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15896271#comment-15896271
 ] 

Jakub Cernohorsky commented on CAMEL-10820:
-------------------------------------------

The easiest solution would be to always create copy of headers and keep actual 
reference to body. It is not the most efficient way, because the copy of 
headers is also done for synchronuous calls.

> DefaultFluentProducerTemplate mixes up data when sending asynchronously
> -----------------------------------------------------------------------
>
>                 Key: CAMEL-10820
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10820
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.18.2
>         Environment: eclipse, win7, gradle
>            Reporter: Jakub Cernohorsky
>             Fix For: 2.18.4, 2.19.0
>
>         Attachments: default_fluent_producer_template.diff
>
>
> DefaultFluentProducerTemplate
> code:
> producer = context.createFluentProducerTemplate();
> future1 = producer.withHeader("action", 
> "register").withBody(body1).asyncSend();
> future2 = producer.withHeader("action", 
> "register").withBody(body2).asyncSend();
> These two subsequent calls produces with the default creation two calls with 
> the same body - body2.
> The cause is that it uses default processor supplier () -> 
> this::populateExchange which is call lazily at the time of send and at that 
> time the body property of DefaultFluentProducerTemplate is body2.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to