1

メッセージが実際にキューに入れられたという非同期確認を受け取りたいです。私はかなり検索し、確認のために EasyNetQ を使用するさまざまな方法を試しましたが、そのような確認を与える接続構成とコードPublishAsyncの組み合わせを見つけることができないようです。Bus

おそらくPublishAsyncこれを行う方法ではありません.EasyNetQ APIで何か他のものを見落としていますか? EasyNetQ でこのシナリオを実装した経験のある人はいますか?

4

2 に答える 2

1

そのような保証のためには、発行者の確認を有効にする必要があります。ドキュメントを参照してください。

https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms

于 2014-10-30T20:44:25.710 に答える
1

Publish Confirmの公式ドキュメントには、次のように記載されています。

ルーティング不可能なメッセージの場合、メッセージがどのキューにもルーティングされないことを交換が確認すると、ブローカーは確認を発行します (キューの空のリストを返します)。

これは、ルーティング キーが一致するエクスチェンジにバインドされたキューがない場合でも、Publish Confirm を取得することを意味します。メッセージが少なくとも 1 つのキューに発行されていることを確認したい場合は、必須フラグが に設定されていることを確認する必要がありますtrueBasicPublish

channel.BasicPublish(
    exchange: "my_exchange",
    routingKey:"routingkey",
    mandatory: true, // at least one queue
    basicProperties: null,
    body: new byte[0]
);

必須が指定されていない場合のデフォルト値は ですfalse。したがって、Mike Hadlow の回答は 100% 正確ではありません。これに関して未解決の問題があり、次のリリースで予定されています。RawRabbit

于 2016-10-20T06:33:46.727 に答える