[ https://issues.apache.org/jira/browse/CAMEL-12638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16541562#comment-16541562 ]
Lukasz edited comment on CAMEL-12638 at 7/12/18 12:39 PM: ---------------------------------------------------------- I'm not really convinced by that [~njiang]. Even in the _Camel in Action (Second Edition)_ **book, Claus and Jonathan use it a standard bean that can be called to execute a service not a builder (see _Listing 7.12 JAX-RS_ _REST implementation_)_:_ {code:java} @ApplicationScoped @Path ( "/api" ) public class RulesController { @Inject @Uri ( "direct:inventory" ) private FluentProducerTemplate producer; @GET @Produces ( MediaType.APPLICATION_JSON ) @Path ( "/rules/{cartIds}" ) public List<ItemDto> rules( @PathParam ( "cartIds" ) String cartIds ) { List<ItemDto> answer = new ArrayList<>(); ItemsDto inventory = producer.request( ItemsDto.class ); [...] } }{code} Obviously they don't refer to a specific implementation but we can all imagine which implementation is provided by default. Also if it was supposed to be *just* a builder I find it misleading that the class actually implements a _Service_ interface. was (Author: lucas_): I'm not really convinced by that [~njiang]. Even in the _Camel in Action (Second Edition)_ **book, Claus and Jonathan use it a standard bean that can be called to execute a service not a builder (see _Listing 7.12 JAX-RS_ _REST implementation_)_:_ _@ApplicationScoped @Path("/api") public class RulesController \{ @Inject @Uri ( "direct:inventory" ) private FluentProducerTemplate producer; @GET @Produces ( MediaType.APPLICATION_JSON ) @Path ( "/rules/{cartIds}" ) public List<ItemDto> rules( @PathParam ( "cartIds" ) String cartIds ) \{ List<ItemDto> answer = new ArrayList<>(); ItemsDto inventory = producer.request( ItemsDto.class ); [...] } }_ Obviously they don't refer to a specific implementation but we can all imagine which implementation is provided by default. Also if it was supposed to be *just* a builder I find it misleading that the class actually implements a _Service_ interface. > DefaultFluentProducerTemplate is not thread safe > ------------------------------------------------ > > Key: CAMEL-12638 > URL: https://issues.apache.org/jira/browse/CAMEL-12638 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.20.2 > Reporter: Lukasz > Priority: Major > > I think we have rediscovered the CAMEL-10820 bug. A body of one request gets > replaced with a body of proceeding request, in our case we use *request()* > method instead of *asyncSend()*. > We use camel together with spring-boot. Consider following code: > > {code:java} > @Service > public class UseCamelService { > private FluentProducerTemplate producer; > @Autowired > public UseCamelService(FluentProducerTemplate producer) { > this.producer = producer; > } > public String getValueFromCamel(String body) { > return producer.to("route").withBody(body).request(String.class); > } > } > {code} > If *UseCamelService.getValueFromCamel()* gets called from two different > threads it is possible for the latter one to override the body of the first > one. -- This message was sent by Atlassian JIRA (v7.6.3#76005)