HiveMQのブログには、すべてのメッセージをデータベースにダンプしようとするときにマルチレベルワイルドカードをサブスクライブしない「ベストプラクティス」の下にリストされています。彼らは、サブスクライブしているクライアントが高負荷のメッセージに追いつくことができないかもしれないと主張し、代わりにブローカプラグインを使用してメッセージのストリームに直接フックすることを提案します。
場合によっては、すべてのメッセージをサブスクライブする必要があります。これらのメッセージは、すべてのメッセージをデータベースに永続化する場合など、ブローカー経由で転送されます。これは、MQTTクライアントを使用して、マルチレベルワイルドカードをサブスクライブすることで実行しないでください。その理由は、多くの場合、サブスクライブしているクライアントが、送信されるメッセージの負荷を処理できないことです。特に、大量のスループットがある場合。推奨されるソリューションは、MQTTブローカーに拡張機能を実装することです。たとえば、HiveMQのプラグインシステムを使用すると、HiveMQの動作にフックし、非同期ルーチンを追加して各着信メッセージを処理し、データベースに保持できます。
どちらかありますか
- mosquittoブローカー用の同様のシステム(拡張機能/プラグイン)、
- 蚊と連携する別の推奨方法、または
- このアプローチがまったく不要であるという合理的な証拠、すなわち、購読しているクライアント
#
がうまくいくことができるということですか?
/programming//q/31584613/3984613は、この質問を網羅的に扱っていません。