1

MassTransit (RabbitMQ を使用) を介して競合するコンシューマー パターンを実装しました。単一のコマンドを処理した結果、他の 3 つのコマンドを発行する必要があります。これを「オール オア ナッシング」(トランザクション スタイル) パブリッシュで実行したいと考えています。「すべて」は、3 つのメッセージが RabbitMQ に正常に送信されることを保証するか、3 つのイベントがいずれも RabbitMQ に送信されないことを保証します。失敗したのは3番目の出版だったとしても。

これまで、私は単純に message.Respond(new MyNewCommandHere(){...}) を呼び出してきましたが、そこや IServiceBus インスタンスのどこにもバルク インターフェイスは見当たりません。

それで...どうにかして一括発行を行うことは可能ですか、またはこのトランザクション発行動作を取得するための他の推奨される方法はありますか?

4

1 に答える 1

3

「一括公開」オプションはありません。3 つのインターフェイスを実装するタイプを公開でき、それらは連続して公開されます。

MSMQ にはトランザクション キューがあります。トランザクションを開き、2 つのキューに送信して、必要な場合にのみロールバックすることができます。MSMQ はお勧めしませんが、RabbitMQ ははるかに堅牢なプラットフォームです。

これは発生したエラーですか、それともまだ発生していない問題を解決しようとしていますか? MassTransit には、接続に関する再試行がいくつかあります。また、コンシューマ中にパブリッシュする場合、非常に長時間実行しているコンシューマでない限り、接続がダウンするのを確認するのは困難です。

于 2013-11-15T12:32:18.003 に答える