[
https://issues.apache.org/jira/browse/CAMEL-6648?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13749763#comment-13749763
]
Raul Kripalani commented on CAMEL-6648:
---------------------------------------
Hi [~jhm],
I checked out the implementation and IMHO we should go for a second iteration
with a slightly different approach.
A ProducerTemplate instance is designed to be a long-term, thread-safe object:
created once in the application lifetime and reused thereon. However, if I
understood properly, this implementation relies on creating a new
ProducerTemplate for each Exchange sent, which may cause unnecessary overhead.
Rather than creating a builder pattern for the ProducerTemplate (PT), I'd
rather us focus on providing "fluency" for creating and dispatching new
interactions around an existing PT:
- New FluentProducerTemplate class which wraps a ProducerTemplate inside.
- The implementation is stateless => the newExchange() method returns a new
FluentProducerTemplateInteractionBuilder object extending ExchangeBuilder.
- asyncStyle, dispatchInOut, dispatchInOnly, etc. methods invoke the
appropriate send/request/sendAsync methods in the wrapped PT.
What do you think? I already started working on this, but please do let me know
if you'd like to give it a go yourself.
Regards,
Raúl.
> Create a Fluent ProducerTemplate
> --------------------------------
>
> Key: CAMEL-6648
> URL: https://issues.apache.org/jira/browse/CAMEL-6648
> Project: Camel
> Issue Type: New Feature
> Components: camel-core
> Reporter: Raul Kripalani
> Assignee: Raul Kripalani
> Attachments: ProducerTemplateBuilder.java,
> ProducerTemplateBuilderTest.java
>
>
> Create a Fluent ProducerTemplate so that users can use it in the following
> manner:
> \\
> \\
> {code}
> // initialize ProducerTemplate with a default endpoint
> FluentProducerTemplate template = new
> FluentProducerTemplate("activemq:queue:foo");
> MyResponse response =
> template.newExchange().toDefaultEndpoint()
> .withBody("this is slick")
> .withHeader("MyHeader1", "HeaderValue")
> .withHeader("MyHeader2", "HeaderValue2")
> .resultAs(MyResponse.class)
> .dispatchInOut(); // or inOnly(), asyncInOut()
> {code}
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira