質問

RabBitmqとEasynetqを使って複数のキュー(私の場合は4つ)を使って優先メッセージを実装しようとしています。

IBusインスタンスは、アプリケーションライフサイクル全体のために生き続けるべきであることを理解しています。 また、RabBitmqが特定のキューでより多くのメッセージを送信するのを阻止する唯一の方法は、IBusを使用してDisposeを廃棄することです。

これら2つの矛盾する要因を考えると、私はこれを建築するべきですか? キューごとの1つのIBusインスタンスと、より重要なキュー上のメッセージが、それほど重要でないものの配置(後に再作成)されている場合は?

役に立ちましたか?

解決

優先順位付けは、EasyNetq / Rabbitmqを使った箱外に利用可能なものではないので、この質問に対する簡単な答えはありません。消費者キャンセル機能を使用して、IBUSを廃棄することなく購読をキャンセルできます。

var consumer = bus.Subscribe<MyMessage>( ....
...
// stop consuming:
consumer.Dispose();
.

しかし、私はこれが優先順位付けシステムの設計への答えであるとは思わない。Raw Rabbitmq.Clientを使用して、4つのキューすべてから消費され、それにコードされている優先順位付けアルゴリズムを持つ独自のiBasicConsumer実装を設計してください。かなり高度なもの私は怖いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top