transactions - Mule Transactional scope with Rollback exception strategy not working -


i have mule flow configured multi-resource transaction transactional scope , rollback exception strategy roll exception , redelivery message start transaction again. rollback exception strategy doesn't redeliver message. below flow config.

<ee:multi-transactional action="always_begin" doc:name="transactional">     <db:insert config-ref="mysql_configuration" autogeneratedkeys="true" autogeneratedkeyscolumnindexes="1" autogeneratedkeyscolumnnames="generated_key"     doc:name="database" transactionalaction="always_join">         <db:parameterized-query>             <![cdata[insert demo(name, age) values(#[payload.customer.name],#[payload.customer.age])]]>         </db:parameterized-query>     </db:insert>     <component class="org.ram.businesscomponent" doc:name="throw exception" />     <jms:outbound-endpoint queue="${queue.name}" connector-ref="active_mq" doc:name="jms">         <ee:multi-transaction action="always_join" />     </jms:outbound-endpoint>     <rollback-exception-strategy doc:name="rollback exception strategy" maxredeliveryattempts="3">         <logger doc:name="logger" />         <on-redelivery-attempts-exceeded>             <logger level="info" doc:name="logger"/>         </on-redelivery-attempts-exceeded>     </rollback-exception-strategy> </ee:multi-transactional> 

can please solve issue?

is code shared complete flow? planning insert in db values. transactional scope should part of flow. transactional scope make sure operations in scope succeed or fail.

so in case db insert goes ok, error occurs, message can't put on jms queue db insert operation being rolled back, means isn't committed.

like docs say: in type of scenario, commit either entirely complete , succeeds, or incomplete , fails. if partially complete, commit – or transaction – fails. transaction fails, mule rolls operations within transaction no 1 part results in partial completion.

if want redelivery message should kept somewhere, try using vm queues , use them 'buffer'.

have @ these 2 examples: https://www.mulesoft.com/exchange#!/using-transactional-scope-in-jms-to-database

https://www.mulesoft.com/exchange#!/jms-message-rollback-redelivery


Comments

Popular posts from this blog

java - Static nested class instance -

c# - Bluetooth LE CanUpdate Characteristic property -

JavaScript - Replace variable from string in all occurrences -