LoginSignup
3
5

More than 5 years have passed since last update.

Spring IntegrationでTCP通信する処理の流れを調べてみた(サーバ編)

Posted at

前回に引き続き、Spring IntegrationでTCP通信する処理の流れを整理するために、煩雑ではありますがクライアント側のシーケンス図を描いてみました。

前回:
Spring IntegrationでTCP通信する処理の流れを調べてみた(クライアント編)

Spring IntegrationによるTCP接続のシーケンス

前段階

autoStartUpが有効、つまりアプリケーション起動時にInboundGatewayConnectionFactoryが起動するケースを想定しています。そのため起点がおかしなことになってしまいました:confounded:

  1. InboundGatewayConnectionFactoryを設定するメソッドを呼ぶ。
  2. ConnectionFactoryは送受信者としてSender, ListenerInboundGatewayを登録する(InboundGatewayTcpSender, TcpListenerを実装している)。
  3. ConnectionFactoryのライフサイクルをstartにする。

TCP接続(クライアントからの受信準備)

  1. 指定したポート番号をもとにServerSocketFactoryServerSocketを生成するよう依頼する。
  2. 受け取ったServerSocketを保持し、Socketが接続を受け入れられる状態で待機させる。
  3. TcpConnectionServerListeningEventを発行する。
  4. SocketをもとにTcpConnectionを構築する。
  5. TcpConnectionConnectionFactoryを介して、InboundGatewayを送受信者として登録する。
  6. InboundGatewayTcpConnectionを保持する、
  7. TcpConnectionOpenEventを発行する。

TCP接続(クライアントへの返信)

  1. クライアントからメッセージを受信する。
  2. メッセージとチャネルを電文変換・業務処理をおこなうためのテンプレートであるMessagingTemplateに渡す。
  3. 処理結果をInboundGatewayに返す。
  4. 返信するメッセージをTcpConnectionに渡す。
  5. MessageMapperにメッセージを渡す。
  6. MessageMapperはメッセージのペイロードを抽出して返す。
  7. TcpConnectionはペイロードを直列化してクライアントに返信する。

備考:
図では省略していますが、MessagingTemplateInboundGatewayの間にはChannelや各種エンドンポイントがあります。

TCP接続(接続の解除)

  1. TCP接続が確立している間になんらかの例外が発生した場合ConnectionExceptionEventを発行する。
  2. Socketを閉じる。
  3. TcpConnectionInboundGatewayに解除する接続をリストから削除するよう依頼する。
  4. ConnectionCloseEventを発行する。
  5. LifeCycleを管理するProcessorInboundGatewayに停止するよう依頼する。
  6. InboundGatewayConnectionFactoryに停止するよう依頼する。
  7. ConnectionFactoryServerSocketを閉じる。
  8. まだ残っているTCP接続があれば、それらを閉じる。
  9. TcpConnectionInboundGatewayに解除する接続をリストから削除するよう依頼する。またタスクが残っている場合はそれも削除する。

備考:
1でなんらかの例外が発生した場合と記載しましたが、Socketが閉じられた場合などを指します。
詳しくはTcpNetConneciton#runを参照してください。

図の作成に使ったサービス

↑の図は前回に引き続きWebSequenceDiagramsというサービスを利用して作成しました。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5