在我們的後端,有幾個服務通過JMS與Apache ActiveMQ發送和接收消息。每個服務都有一個到ActiveMQ代理的會話。我們現在想要做以下(僞代碼):使用與JMS(ActiveMQ)交易
服務S1:
Message m = createMessage("s2","Hello World")
sendMessage(m)
try {
Message answer = commit()
...
} catch (TransactionFailedException e){
...
}
服務S2:
onMessageReceive:
try {
Message m = getReceivedMessage()
Message answer = doSomeStuff()
send(answer)
} (Exception e) {
rollback()
}
的承諾obviuosly有阻塞,直到答案到達或交易failes 。服務s2也應該有可能創建一個新的嵌套事務,因爲s2正在向另一個服務發送消息。如何使用ActiveMQ的事務來實現這種行爲?有一些示例可用,但在這些示例中,事務僅用作發送消息的批處理機制。
您是否期待一項交易包含在s1和s2中完成的工作? – djna 2012-02-20 08:49:32
是的,如果s2失敗,則交易在s1中失敗。 – problemzebra 2012-02-20 12:08:05