2017-03-20 2 views
0

Je pense à créer une application Spring Spring Integration Boot àSpring Integration gestion des transactions à l'aide Atomikos

1-Poll messages from a DB 
2-Do some processing on it 
3-Publish messages to EMS Queue 

utilisant Atomikos pour la gestion des transactions. Ma question est la suivante: Si la configuration ci-dessus sera transactionnelle avec toutes les configurations JTA requises? J'ai aussi lu quelque part, si plusieurs threads sont créés dans Spring Integration, par exemple en utilisant un Splitter, alors le contexte ne sera pas transactionnel. Comment surmonter cela?

Répondre

0

Si vous configurez l'interrogateur comme transactionnel, le flux s'exécutera dans une transaction, tant que vous ne passez pas à un autre thread (via un canal ExecutorChannel ou QueueChannel, par exemple).

L'ajout d'un séparateur n'interrompra pas les limites de la transaction car chaque division sera traitée sur le même thread.

+0

Si j'utilise un adaptateur de canal entrant pour interroger des messages de la base de données, puis passer au séparateur, au convertisseur, à l'éditeur pour le mettre en file d'attente via un adaptateur de canal sortant, est-il possible de couvrir l'ensemble du processus? –

+0

Désolé, j'ai écrit l'analyseur au lieu de poller (pas assez de café). Oui, configurez l'interrogateur pour être transactionnel; la transaction commencera avant que la source soit interrogée et validée lorsque le flux aval sera terminé. –