パブリッシュする予定のメッセージを延期したいのですが、Rebus はメッセージを送信キューに返します。実際の受信者にそれらを送信することを期待していました。
私はここで何か間違ったことをしていますか、それとも遅延関数を間違って理解しましたか?
パブリッシュする予定のメッセージを延期したいのですが、Rebus はメッセージを送信キューに返します。実際の受信者にそれらを送信することを期待していました。
私はここで何か間違ったことをしていますか、それとも遅延関数を間違って理解しましたか?
これが仕組みです。メッセージbus.Defer
のヘッダーで指定されたリターン アドレスにメッセージを送信しますHeaders.ReturnAddress
。デフォルトでは、送信者の入力キューに設定されています。
次のようにメッセージの返信アドレスを明示的に設定することで、タイムアウト マネージャにメッセージを別の場所に送信させることができます。
// specify which address to reply to
bus.AttachHeader(msg, Headers.ReturnAddress, "somewhereelse");
// defer the message
bus.Defer(toTheFuture, msg);
ただし、あなたの場合、メッセージを公開したいので、タイムアウトマネージャーから返されたときにメッセージを公開するローカルハンドラーを追加することをお勧めします。