Hi,
I have setup camel route with mode <transacted/> to perform rollback
on Fuse ESB 4.3. Here is the route def.
<bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="connectionFactory">
<osgi:reference interface="javax.jms.ConnectionFactory"/>
</property>
<property name="transacted" value="true" />
<property name="transactionManager">
<osgi:reference
interface="org.springframework.transaction.PlatformTransactionManager"/>
</property>
</bean>
<!-- SpringTransactionPolicy bean - PROPAGATION_REQUIRED_NEW inject
OSGI reference -->
<bean id="PROPAGATION_REQUIRED"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager">
<osgi:reference
interface="org.springframework.transaction.PlatformTransactionManager"/>
</property>
<property name="propagationBehaviorName"
value="PROPAGATION_REQUIRED"/>
</bean>
<route>
<from uri="activemq:queue:in"/>
<transacted/>
<doTry>
<bean ref="incidentSaver" method="process"/>
<bean ref="generateError" method="generateError"/>
<doCatch>
<exception>java.lang.Exception</exception>
<rollback/>
</doCatch>
</doTry>
</route>
Surprisingly, rollback does not occur and I get the following error :
org.apache.camel.RuntimeCamelException:
org.apache.camel.RollbackExchangeException: Intended rollback.
Exchange[JmsMessage: ActiveMQObjectMessage {commandId = 6,
responseRequired = false, messageId =
ID:Charles-Moulliards-MacBook-Pro.local-57614-1297168327481-2:20:1:1:1,
originalDestination = null, originalTransactionId = null, producerId =
ID:Charles-Moulliards-MacBook-Pro.local-57614-1297168327481-2:20:1:1,
destination = queue://in, transactionId =
TX:ID:Charles-Moulliards-MacBook-Pro.local-57614-1297168327481-2:20:1,
expiration = 0, timestamp = 1297173265400, arrival = 0, brokerInTime =
1297173265400, brokerOutTime = 1297173265408, correlationId = null,
replyTo = null, persistent = true, type = null, priority = 4, groupID
= null, groupSequence = 0, targetConsumerId = null, compressed =
false, userID = null, content =
org.apache.activemq.util.ByteSequence@3dcf5b66, marshalledProperties =
org.apache.activemq.util.ByteSequence@7879a53d, dataStructure = null,
redeliveryCounter = 0, size = 0, properties =
{CamelFileNameOnly=incident.txt, CamelFileLastModified=Tue Feb 08
14:54:25 CET 2011, CamelFileRelativePath=incident.txt,
CamelFileAbsolutePath=/Users/charlesmoulliard/Applications/apache-servicemix-4.3.0-fuse-03-goodyear/data/reportincident/incident.txt,
CamelFileLength=1099, CamelFileName=incident.txt,
CamelFilePath=data/reportincident/incident.txt,
CamelFileParent=data/reportincident, origin=file,
CamelFileAbsolute=false}, readOnlyProperties = true, readOnlyBody =
true, droppable = false}]
at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1133)[72:org.apache.camel.camel-core:2.4.0.fuse-02-00]
at
org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:162)[79:org.apache.camel.camel-spring:2.4.0.fuse-02-00]
at
org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)[78:org.springframework.transaction:3.0.3.RELEASE]
at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)[78:org.springframework.transaction:3.0.3.RELEASE]
Regards,
Charles Moulliard
Sr. Principal Solution Architect - FuseSource
Apache Committer
Blog : http://cmoulliard.blogspot.com
Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard
Skype: cmoulliard