MQTTメッセージを最初のサブスクライバが受信した後に削除して、他のサブスクライバがそれを読み取れないようにする方法はありますか?
この奇妙な質問を明確にするには:
私は4つのJBossインスタンスを扱わなければなりません(私はこのアーキテクチャーの責任を絶対に負いません)。彼らはお互いの鏡です。だから、すべての人が特定のトピックを購読する仕事をしています。このトピックのメッセージは、データベースに保存されます。私が避けなければならないのは、同じメッセージが4回持続されるということです。だから、私の考えはトピックに関する競争条件を作り出すことでした。メッセージを読み取った最初のジョブはそれを削除し、他のジョブはそれを受信しません。 これは可能ですか?MQTTメッセージを最初のサブスクライバが読み取った後に削除します
1
A
答えて
2
ソート答えいいえ、メッセージが公開されると「削除」することはできません。ブローカーはすべてのサブスクライバにほぼ即時に配信します。
あなたが探しているものは、共有サブスクリプションと呼ばれるものです。これにより、クライアントのグループは効果的に1つのユニットとしてトピックに登録することができ、メッセージはグループのいずれかにのみ配信されます。これは、ロードバランシングを目的としています。共有サブスクリプションは、v5の一部としてMQTT仕様に追加されます。
現在、多数のブローカがこの機能を実装しています(各ブローカはわずかに異なる実装であるため、v5までブローカの実装をシームレスに切り替えることはできません)。私は、次のブローカーが共有サブスクリプションのサポートのいくつかのバージョンを持っていると信じて、より多くのがあるかもしれない:
- HiveMQ
- IBMメッセージ視力アプライアンス
- サブスクリプションの主な目的は、にある場合
0
vernemq DB内のデータを永続させるには、MQTT Brokerの後端でAPI呼び出しまたはダイレクト・コード統合を使用してデータを取得して格納する必要があります。あなたは、QoS 0
関連する問題
- 1. viewpagerは最初のページを最初に読み込まなかったが、スワイプして最後のページに移動した後に読み込む
- 2. 最初のアルファベットと最後のアルファベットを読み取った後にC#で文字列を解析します。
- 3. 削除はリポジトリパターンで最初に読み取る必要がありますか?
- 4. アンドロイドでpahoを持つMQTT、最初のメッセージのみを受信
- 5. サブスクライバが接続した後にパブリッシャが送信するメッセージのみを取得します(マストトランジット)
- 6. SMSメッセージをKitKatで動作しないメッセージの読み取り/未読または削除としてマーク
- 7. UIAlertViewはメッセージの最後の行を削除します
- 8. Androidシステムでは、hasNextLine()は最初の行を読み取った後にfalseを返します
- 9. 反応ネイティブバーコードスキャナは、最初のコード読み取り後にコードを読み取ることを停止します。
- 10. クロニクルの最後のメッセージを読み取る方法
- 11. 最初に読み込まずにLINQ to SQLレコードを削除する
- 12. ログイン後最初のページの読み込み時に最初のページの読み込み時にコードを追加
- 13. ファイルを読み取った後のEOF?
- 14. 最初のページの読み込みと最初の読み込みボタンをクリックしました。
- 15. プロジェクトドキュメントの削除が解除された後、シートアドオンの読み込みが停止されました
- 16. ファイルの最後の行の最後の8バイトを除いて最初の数バイトのファイルの最初の行を読み取ってファイルの残りの部分を読み取るためのRegexは何ですか?
- 17. Fullcalendarの最初の読み込み時に間違ったサイズ
- 18. PHPの爆発 - 文字列の最初の部分を削除し、最後の部分を削除します
- 19. ObservableCollectionから最初のオブジェクトを削除した後にRectangle.OpacityMaskが消える
- 20. php-ファイルを読み取っている間に文字を削除します
- 21. 最初のdivの削除ボタンを削除しますか?
- 22. jQuery入力の最初と最後のスペースを削除します。propertychange
- 23. Mysqlは文字列の最初と最後の部分を削除します。
- 24. 成功した削除メッセージは、GridViewの行を削除した後
- 25. Javaクロニクルメッセージは読み込み後に削除されません
- 26. React - 最後に訪問したページデータを読み込みます
- 27. ファイルは、最初の行のみを読み込み、その後
- 28. サブスクライバがMqttトピックで非アクティブなときにプロデューサによって送信されたすべてのデータを取得する方法Java(保持されていないメッセージまたは最後のメッセージ)
- 29. 最初に挿入されたレコードを削除します。
- 30. 最初のメッセージの後にSQS receiveMessageが機能しなくなりました
を使用するときは、QoS 1またはデータの損失を使用するときに重い負荷に最適なストレージ(あなたの質問で述べたように)、または重複可能性のためのQoS 2を使用する場合
サブスクライブは常にどちらかのオーバーヘッドをすることができご回答どうもありがとうございました。共有購読をサポートするブローカーを使用するかどうかを確認します。 – Raistlin
共有購読のためのIBM Message Sight構文と苦労した後、それは魅力的に機能します。どうもありがとうございました。 – Raistlin