mqtt または stomp 経由で到着するメッセージを処理するための Spring Integration プロセスがいくつかあります。このために、アダプター mqttpahomessagedrivenchanneladapter
と stompinboundchanneladapter
を使用します。
mqtt の場合、ストリーム内のいずれかのエンドポイントが例外をスローすると、アダプターは接続を閉じてメッセージを受信しなくなることがわかりました。同様に、プロキシを再起動しても、プロキシへの接続は再度確立されません。
例外を処理するために、エラー チャネル名をデフォルトで Spring によって処理される値 "errorchannel" アダプターに設定します。私たちの目的は、基礎となる接続を閉じずに、例外をログに記録することだけです。これはプロセス全体で例外を処理する正しい方法ですか?
再接続の問題に関しては、トランスポート プロトコルごとに異なる方法があります。
connectionoptions
の automaticreconnect
を true
に設定します: taskscheduler
を reactornettytcpstompclient
:これはこの問題に対処する最善の方法ですか?
はい、errorchannel
オプションは、mqtt クライアントにスローされる例外を抑制する良い方法です。グローバル errorchannel
である必要はありません。さまざまな場所で使用できます。 setautomaticreconnect(true)
インバウンドチャネルアダプターに特に推奨されます。
reactornettytcpstompclient
の taskscheduler
は再接続では機能しません。 Javadoc を参照してください。 reactornettytcpstompclient
:
別のバリアントを介した再接続のケース:
リーリー以上がSpring Integration アダプターを使用して基礎となる MQTT および STOMP 接続を処理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。