1

MQTT を使用して Solace 経由でバックエンド サーバーにデータを送信するデバイスが多数あります。大量の受信メッセージを処理する必要があるため、受信メッセージを処理するためにいくつかのリスナー インスタンスを開始することを考えています。しかし、MQTT pub/sub は事実上 1 対多のメッセージングであるため、これは役に立ちません。つまり、同じメッセージがすべてのサブスクライブ リスナーに配信されます。Solace が DTO をサポートしていることは知っていますが、MQTT を使用した DTO をサポートしていますか? もしそうなら、どうすればいいですか?そうでない場合、大量の着信メッセージを処理するために複数のリスナーを開始する方法について何か提案はありますか? 私が今考えているのは、これらのトピックにサブスクライブする非独占的な配信でキューを作成することです。他に良い方法があるかどうかはわかりません。

ありがとうございました。

4

1 に答える 1

3

MQTT プロトコルには、ラウンド ロビン方式でメッセージをコンシューマーに配信する機能がありません。

バックエンド サーバーが MQTT を使用してメッセージを受信して​​いないと仮定しています。

次のいずれかを実行できます。

  1. さまざまなトピックに発行して負荷を分散します。
  2. 非排他的なキューをトピックにサブスクライブさせ、キューがメッセージをコンシューマーにラウンド ロビン方式で配布できるようにします。

パブリッシャーが QoS 1 メッセージをパブリッシュしている場合は、オプション 2 が正しいオプションであることに注意してください。すべてのコンシューマーがオフラインになると、バックエンド サーバーによって消費されるメッセージはキューにスプールされます。キューがないと、オンライン コンシューマが存在しない場合、メッセージは破棄されます。

于 2016-06-06T08:48:26.193 に答える