2016-11-16 7 views
1

、キューとルーティングキーを変更、私はの流れを取り、単一の交換を持っていますいくつかの流動性プロバイダからの引用をルーティングキーに従って対応するキューにルーティングします。 引用符が解析され、画面上の関連するウィジェットに表示されます。が動的に私は私のメッセージバスとしてのRabbitMQを選んだ私は、</p> <p>をリアルタイムで株式相場を提示するために想定したメッセージベースのWebアプリケーションを構築していRabbitMQの

これは、Exchangeとキュー構造である -

| exchange  | type | routing key  | queue    | 
|------------------------------------------------------------------| 
| quotes   | topic | NASDAQ.MSFT.500 | Widget1Id   | 
| quotes   | topic | NASDAQ.FB.1500 | Widget2Id   | 
| quotes   | topic | S&P500.ABT.200 | Widget3Id   | 
| quotes   | topic | S&P500.MMM.200 | Widget4Id   | 
| quotes   | topic | S&P500.MMM.500 | Widget5Id   | 

..だから 、私はのは、& P500.ACN.200

Sを言わせて、キューWidget1Idのルーティングキーを変更したいときに問題が開始

私はいくつかのオプションを検討しました:

どちらが最速になりますか?

Safest?

データが少なくなりますか?

私がキューとルーティングキーをモデル化した方法に関するコメントがあれば、私はそれを聞きたいと思うでしょう。

ありがとうございました

+0

http://zeromq.org/のような他のフレームワークについて考えましたか? – vtortola

答えて

0

どちらのオプションを指定すると、データが失われます。私はアプローチ2(あなたがバインド解除して再度バインドする)に従うことをお勧めします。別の方法として、新しいキューを作成し、そのキューを新しいルーティングキーでExchangeにバインドし、後で既存のキューとそのバインディングを削除することができます。

0

もう1つの方法は、Widget1Idキューを維持し、S&P500.ACN.200ルーティングキーを使用して2回目の交換をバインドすることです。この方法では、Widget1Idは両方のルーティングキーのメッセージを受信します。準備ができたら、前のバインディングを削除できます。

Widget1Idにすでにキューイングされているメッセージは失われず、バインド解除/再バインドまたはキューを再作成した瞬間に公開されたメッセージは失われません。

より具体的な例が必要な場合は、このシナリオはRabbitMQドキュメントのTutorial 4に記載されています。

関連する問題

 関連する問題