[
https://issues.apache.org/jira/browse/CAMEL-4616?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yasser Zamani updated CAMEL-4616:
---------------------------------
Fix Version/s: 3.21.0
(was: Future)
> register exception listener with camel-jms producer endpoint
> ------------------------------------------------------------
>
> Key: CAMEL-4616
> URL: https://issues.apache.org/jira/browse/CAMEL-4616
> Project: Camel
> Issue Type: Improvement
> Components: camel-jms
> Affects Versions: 2.8.2
> Environment: camel-jms producer sending to ActiveMQ
> Reporter: Torsten Mielke
> Assignee: Yasser Zamani
> Priority: Major
> Labels: transactions
> Fix For: 3.21.0
>
>
> camel-jms should register an exception listener automatically when used as a
> message producer. That way it can deal with any exception that may occur on
> async sends.
> To be more precise:
> If a camel-jms producer sends a msg within a transaction to an ActiveMQ
> broker, then this message send happens async by default (kind of an
> optimization done by ActiveMQ). If anything goes wrong with the send (e.g.
> broker raises a javax.jms.ResourceAllocationException because its full or
> there is a transport problem) then we currently don't catch this exception as
> there is no async exception listener registered. What's worse the TX will be
> committed thereafter although the send has actually failed.
> As a result the msg is lost.
> For ActiveMQ there is a simple solution to this problem, either
> - set jms.useAsyncSend=false on the broker URL, or
> - call setAlwaysSyncSend(true) on the ActiveMQConnectionFactory
> However many users won't be aware of this solution and will simply assume
> that using a transaction is enough to guard against message loss.
> Also the same problem can potentially arise with other JMS providers if they
> also use async send within a transaction.
> Camel should ensure that the out of the box behavior prevents from loosing
> msgs in transactional sends.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)