メッセージが実際にキューに入れられたという非同期確認を受け取りたいです。私はかなり検索し、確認のために EasyNetQ を使用するさまざまな方法を試しましたが、そのような確認を与える接続構成とコードPublishAsync
の組み合わせを見つけることができないようです。Bus
おそらくPublishAsync
これを行う方法ではありません.EasyNetQ APIで何か他のものを見落としていますか? EasyNetQ でこのシナリオを実装した経験のある人はいますか?
そのような保証のためには、発行者の確認を有効にする必要があります。ドキュメントを参照してください。
https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms
Publish Confirmの公式ドキュメントには、次のように記載されています。
ルーティング不可能なメッセージの場合、メッセージがどのキューにもルーティングされないことを交換が確認すると、ブローカーは確認を発行します (キューの空のリストを返します)。
これは、ルーティング キーが一致するエクスチェンジにバインドされたキューがない場合でも、Publish Confirm を取得することを意味します。メッセージが少なくとも 1 つのキューに発行されていることを確認したい場合は、必須フラグが に設定されていることを確認する必要がありますtrue
。BasicPublish
channel.BasicPublish(
exchange: "my_exchange",
routingKey:"routingkey",
mandatory: true, // at least one queue
basicProperties: null,
body: new byte[0]
);
必須が指定されていない場合のデフォルト値は ですfalse
。したがって、Mike Hadlow の回答は 100% 正確ではありません。これに関して未解決の問題があり、次のリリースで予定されています。RawRabbit