2012-02-28 10 views
2

条件:RabbitMQのロールバックトランザクションと再経路メッセージ

1) 2)キューがトランザクション 3)としてマークされている休止状態トランザクションマネージャを使用する消費者をトリガするためにバネAMQPとバンドル来るSimpleMessageListenerContainerを使用メッセージ。

シナリオ:

消費者は、Hibernateトランザクションがロールバックさせ、そして、メッセージが再キューイングするためにいくつかの予期しないエラーに起因する例外を生成します。これはコンテナによって処理されます。

SimpleMessageContainerが書かれているので、メッセージをキューから削除する方法が見つからず、&にプラットフォームトランザクションマネージャのロールバックがあります。 &チャネルのいずれかがロールバックするか、操作が成功します。

私は、メッセージにフィールドが設定されているため例外として失敗したとマークし、別のコンシューマに戻ったときにAOPアドバイスを使ってメッセージの状態を分析し、メッセージを別の交換所に送信する。

私は、メッセージの本文を変更したり、rabbitmqのメッセージにタグを付けるヘッダーを追加したりすることはできません。メッセージが戻ってくるたびに元のメッセージが返されます。

どのようにメッセージにタグを付けることができますか?

トランザクションをロールバックしている間に他の人が例外でメッセージの再ルーティングを解決する方法を教えてください。

答えて

0

"x-dead-letter-exchange"という名前のキュー引数があります。この引数は、メッセージが拒否されたり期限切れになった場合に再発行されるように指定します。

関連する問題