MQTT ブローカーからメッセージをポーリングするソリューションを探しています。ここで簡単に解決策を説明します。
特定の車両関連の診断データを処理するために REST API を公開する Spring ベースの Controller クラスがあります。これらの API の 1 つNotify3P()
を使用して、MQTT Java クライアントを作成し、入力データに基づいて特定のトピックの MQTT ブローカーにメッセージを発行します。私の要件は、クライアントが MQTT でメッセージを発行するたびにサードパーティ システムに通知することです。
3P システムは、通知を受信すると MQTT からメッセージを受け取ります。次に、REST API を介して MQTT ブローカーからメッセージを取得するgetMessage()
必要があります (上記のコントローラー クラスで公開する必要があります)。API は、getMessage()
既に公開されているメッセージを MQTT にポーリングし、それを 3P システムに渡す必要があります。次に、3P システムは何らかの処理を行いpostMessage()
、コントローラー クラスで公開されている別の REST API を介してシステムに応答を返します。は、MQTTpostMessage()
のトピックに関するメッセージを投稿する必要があります。MQTTのトピックをポーリングし、クライアントに応答を返すresponse
別の REST API が必要です。checkResponse()
response
request
これまでに行ったこと: アプリケーションの起動時に、MQTTとresponse
トピックをリッスンするスタートアップ Bean があります。request
ここで、REST API を使用してトピックにデータを公開しますNotify3P()
。メッセージを取得するスタートアップ Bean にコールバックをアタッチしました。問題は、3P がコントローラーを呼び出して MQTT からメッセージをポーリングする必要がある場合です。
MQTT でメッセージを保持し、オンデマンドで消費する方法が明確ではありません。MQTT でそれを行うメカニズムはありますか? また、3P システムがメッセージを投稿response
したら、トピックをポーリングしresponse
て MQTT からの応答を取得し、コントローラーのクライアントに送信するにはどうすればよいですか?
問題の説明が理にかなっていることを願っています。誰かからの解決策がある場合は、投稿してください。サンプルコードは非常に役立ちます。
前もって感謝します!!