2

私は以下を実装しようとしています、

  • メッセージは、メッセージの優先順位とともにメッセージ ブローカに到着します
  • メッセージの優先度に基づいて、さまざまなキューへの道を見つけます

したがって、Q1 には優先度 1 のメッセージがあり、Q2 には優先度 2 のメッセージがあります。

Message Broker プロセス Q1 を他よりも高速にする方法はありますか?

  • キュー間で優先度を設定することはできますか?
  • Q1 は Q2 よりも優先的に処理されますか、それとも Q1 の処理が他のキューの処理をブロックしますか?
  • 交換自体が、他のキューに順番にフィードする優先キューになることはできますか?
  • プラグインを介してデフォルトの交換を拡張できることがわかりました。私が持っている上記の要件をすでに実装しているものはありますか?

これは実現可能なものですか?それともメッセージブローカーの基本理念に反するのでしょうか?

優先メッセージを使用する際のベスト プラクティスへのリンクはありますか?

私は 8 月 28 日に Qpid nabble フォーラムにこのメッセージを投稿しましたが、「この投稿はまだメーリング リストに受け入れられていません」。

お時間をいただきありがとうございます。

4

1 に答える 1

1

In qpid you can define a queue as a "priority queue".

session.createQueue(queueName;{create:always, node:{type:queue,
                    x-declare:{arguments:{'x-qpid-priorities':3}}}})

In a priority queue, a message with higher priority will leap frog over messages with lower priority and will be picked up earlier. You need not define separate queues for each priority level.

The x-qpid-priorities parameter specifies how many distinct priorities are supported by the queue.

Note though, priority based leapfrogging only works for consuming messages in a queue. Browsing doesn't respect priorities and you will see messages in the enqueue order.

Implementing separate queues for each priority isn't very useful, but if you insist on doing that, you will have to manage priority based consumption on your own. You can implement a consumer to check for messages in high priority queue, and then only check lower priority queue only if the first queue is empty.

于 2012-09-26T19:22:42.787 に答える