Anforderung: Wir müssen eine Nachricht von einer JMS-Warteschlange abrufen (von einer anderen Anwendung veröffentlicht) und die Nachricht in unserer JMS-Warteschlange beibehalten. Wenn der gesamte Datenfluss als Transaktion ausgeführt werden soll, sollte die Nachricht, die von der vorgelagerten JMS-Warteschlange empfangen wird, nicht bestätigt werden, wenn eine Nachricht in der nachgelagerten JMS-Warteschlange nicht beibehalten werden kann. Meine Konfiguration ist als untenSoll JmsTransactionManager verwendet werden, wenn von einer JMS-Queue zu einer anderen JMS-Queue bleiben soll
<int-jms:message-driven-channel-adapter
id="MessageDrivenAdapter" channel=" jmsMessageChannel " destination="sourceDestination"
connectionFactory="CF1"
acknowledge="transacted"
/>
<int:channel id=" jmsMessageChannel " />
<int-jms:outbound-channel-adapter id="sendsomemsg"
channel=" jmsMessageChannel " destination=”finalDestination”
connectionFactory="CF2"
session-transacted="true" />
Muss ich JmsTransactionManager in diesem Szenario verwenden oder über Konfiguration ausreichen sollte. Wir können doppelte Nachrichten verarbeiten, daher glaube ich, dass wir keine XA-Transaktion benötigen.
Diese Komponenten verwenden dieselbe Verbindungsfactory. –
Die Verbindungsfabriken sind anders. Habe den Code bearbeitet. So glaube ich, muss JmsTransactionManager verwenden – vjm
Nein, Sie benötigen 'JtaTransactionManager' oder eine andere XA-Implementierung, wenn Sie' ChainedTransactionManager' kompliziert finden. Der gemeinsame 'JmsTransactionManager' funktioniert nicht für Ihren Fall. –