Rebus と RabbitMQ を一緒に使用して、いくつかの異なるシナリオをカバーすることを検討しています。
シナリオ A 中央サーバーが任意のサブスクライバーのリストにプッシュ通知を送信できるようにしたいのですが、メッセージは永続的または永続的である必要はありません。サブスクライバーが接続されている場合は通知を受け取る必要がありますが、切断されている場合は、クライアントのメッセージをキューに入れる必要はありません。
これまでのテストでは、プロデューサーとコンシューマーがUseRabbitMqInOneWayMode()
and と通信することができましManageSubscriptions()
たが、サブスクライバーがいない場合、またはサブスクライバーが切断された場合、RabbitMQ でメッセージが蓄積されます。のヘッダーを false に設定しようとしましたRabbitMqMessageQueue.InternalHeaders.MessageDurability
が、効果がありません。Rebus が設定するデフォルトのキューが耐久性があるためだと思います。Rebus 内でこの動作を制御する方法はありますか?
シナリオ B クライアントがオンラインになるか切断されたときに、クライアント間に要求/応答チャネルをセットアップしたいと考えています。例えば:
- クライアント A とクライアント B が接続する
- クライアント A は、クライアント B だけが持っているデータを要求するメッセージを送信します。クライアント B は情報を収集し、A に返信します。
- クライアント B が切断される
- クライアント A はクライアント B にデータを要求しますが、B が使用できなくなったため、エラーを受け取るはずです。
この場合の推奨構成は何ですか?
ありがとう。