5

パブリッシュ/サブスクライブバス(Mule、ZeroMQ、RabbitMQなど)を使用するシステムを構築する必要がありますが、すべてのトピックは、サブスクライバアプリケーションが、それは、Pub/Subバスがメッセージを配信できるようになるとすぐに加入する。PubSub +信頼性のない現在のユーザへの信頼性の高いメッセージ配信

私は、一部のアプリケーションがパブリッシュ/サブスクライブバスに確実に接続されるシステムを持っていますが、他のアプリケーションはアクティブではなく、バスに常時接続されていません。

信頼できないアプリケーションとパブリッシュ/サブスクライブバスの間にある種の「プレゼンス」プロトコルを使用して、「現在の」アプリケーションがすぐにメッセージを配信し、「存在しない」アプリケーションがメッセージをキューに入れられるようにすることは、何らかの永続的なバッファに格納し、「プレゼンスハンドシェイク」を完了するとすぐに、キューに入れられたメッセージが新しく存在するアプリケーションに配信されます。

この種類の機能が組み込まれているパブリッシュ/サブスクライブバスはありますか、またはこれを行うオープンソースのアドオンはありますか?これを説明するURLを教えてください。

答えて

4

AMQP準拠のブローカー(RabbitMQなど)を使用すると、この動作を簡単に実行できます。

使用モデルに適した交換タイプを選択してください。 chat.messagesのように、絶対に名前のついた目的地に送信する場合は、directエクスチェンジを使用することをおすすめします。

パターンベースのルーティングを行う場合は、topic交換を使用することをお勧めします。次に、chat.messages.*などのパターンに基づいてルーティングすることができます。

ルーティングの詳細は、RabbitMQ Tutorialsに記載されています。

言及している種類の永続サブスクリプションを作成するには、各サブスクライバにそのサブスクライバ専用のキューを作成させます。キューは、選択したエクスチェンジの関連するルーティングキーにバインドされます。

各サブスクライバには独自のキューがあるため、アクティブなときにサブスクライバがメッセージを消費し、サブスクライバが非アクティブであるか切断されているときにメッセージが消費されます。

0

言語で言及していませんが、JMSdurable subscribersを使用してこれを実行できます。前述のRabbitMQを含むJMS(there are many)の実装は、この機能をサポートします。

関連する問題