データベース トランザクションはおなじみの概念です。
try {
...
..
updateDB()
..
...
commit();
} catch error {
rollback();
}
エラーが発生した場合、updateDB によって行われた変更は破棄されます。
メッセージ キュー トランザクションのロールバックが何を元に戻すかを知りたかったのです。
try{
...
...
//EDIT: swapped the order of receive and send
Message m = queue1.receiveMessage(..)
..
..
queue2.sendMessage(..)
..
..
commit();
} catch error {
rollback();
}
具体的には、ロールバックは何をしますか
- メッセージの送信をキャンセルする
- メッセージの受信を解除します。つまり、受信したメッセージをキューに戻します
または、データベースの tx アナロジーを拡張しすぎていますか。
ありがとう
編集:送信操作と受信操作が関連していることを意味しているわけではありません。メッセージ ブローカの状態を変更する 2 つの操作があることを言いたかっただけです。受信はキューからメッセージを取り出しますが、他のコンシューマが存在する場合は利用できません。