2016-01-26 21 views
5

私はMQTTブローカとしてmosquitto(http://mosquitto.org/)を使用していますが、(同じトピックへの)ロード・バランシング・サブスクライバに関するアドバイスを探しています。これはどのように達成されますか?私がプロトコルについて読んだことはすべて、すべてへのサブスクライバと同じトピックが公開されていることを示しています。複数のサブスクライバでMQTTを使用する

これは効率が悪いと思われますので、負荷分散状態を保証するラウンドロビンアプローチで、公開されたメッセージを接続済みのユーザの1人に与える方法を探しています。

MQTTではこれが不可能な場合、加入者はどのようにメッセージに圧倒されることなく避けられますか?

答えて

6

通常、MQTTアプリケーションは、圧倒的な加入者がいないように設計します。これは、さまざまなトピックに負荷を分散することで実現できます。

あなたが本当にそれを行うことができない場合は、MessageSightHiveMQのような洗練されたMQTTブローカーが持っている共有サブスクリプションアプローチを見てみましょう。これはまさにあなたが探している機能ですが、ブローカーに依存しており、公式のMQTT仕様の一部ではありません。

2

MQTTはPub/Subプロトコルです。MQTTは、メッセージの1から多くの配布が1対1(多くの)のメッセージではないことを前提としています。あなたが書いているのは、Pub/Subとはまったく異なるMessage Queuingシステムに似ています。

このプロトコルの純粋な実装としてのMosquittoは、あなたがそれを記述したときに配送をサポートしません。 1つの解決策は、加入者内にある着信メッセージが追加され、スレッドプールによって消費されるローカルキューを私たちに提供することです。

IBM Message Sightアプライアンスは、Shared Subscriptionsというプロトコルの拡張として、探しているタイプのメッセージ配信を提供する可能性がありますが、これを有効にすると純粋なMQTT仕様から逸脱しています。

+0

共用サブスクリプションもMQTT v5仕様の一部です – hardillb

関連する問題