ホームページ >Java >Spring Integration アダプターを使用して基礎となる MQTT および STOMP 接続を処理する

Spring Integration アダプターを使用して基礎となる MQTT および STOMP 接続を処理する

WBOY
WBOY転載
2024-02-05 22:00:101242ブラウズ
質問の内容

mqtt または stomp 経由で到着するメッセージを処理するための Spring Integration プロセスがいくつかあります。このために、アダプター mqttpahomessagedrivenchanneladapterstompinboundchanneladapter を使用します。 mqtt の場合、ストリーム内のいずれかのエンドポイントが例外をスローすると、アダプターは接続を閉じてメッセージを受信しなくなることがわかりました。同様に、プロキシを再起動しても、プロキシへの接続は再度確立されません。

例外を処理するために、エラー チャネル名をデフォルトで Spring によって処理される値 "errorchannel" アダプターに設定します。私たちの目的は、基礎となる接続を閉じずに、例外をログに記録することだけです。これはプロセス全体で例外を処理する正しい方法ですか?

再接続の問題に関しては、トランスポート プロトコルごとに異なる方法があります。

  • mqtt の場合、connectionoptionsautomaticreconnecttrue に設定します:
リーリー
  • stomp の場合、コンテキスト内の taskschedulerreactornettytcpstompclient:
  • に設定します。
リーリー

これはこの問題に対処する最善の方法ですか?


正解


はい、errorchannel オプションは、mqtt クライアントにスローされる例外を抑制する良い方法です。グローバル errorchannel である必要はありません。さまざまな場所で使用できます。 setautomaticreconnect(true) インバウンドチャネルアダプターに特に推奨されます。

reactornettytcpstompclienttaskscheduler は再接続では機能しません。 Javadoc を参照してください。 reactornettytcpstompclient:

では再接続ロジックが使用されていないと思います。 リーリー

別のバリアントを介した再接続のケース:

リーリー

以上がSpring Integration アダプターを使用して基礎となる MQTT および STOMP 接続を処理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。