250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 뉴스앱
    • 오블완

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/spring, spring boot

    [Spring integration] TCP 연결 끊김 처리, connectionId

    2024. 6. 25. 13:05
    728x90
    반응형

    TCP 연결이 끊겼을때 특정 로직을 실행하고 싶으면 아래와 같이 TCP config 파일에 TcpConnectionCloseEvent 이벤트의 리스너를 정의하면 됩니다.

    @Bean
    fun closed(): ApplicationListener<TcpConnectionCloseEvent> {
        return ApplicationListener<TcpConnectionCloseEvent> { e: TcpConnectionCloseEvent ->
            logger.info {"Connection closed: ${e.getConnectionId()}"}
        }
    }

    closed 함수는 아래와 같은 일을 합니다.

    • 이벤트 리스닝: TCP 연결이 닫힐 때 발생하는 TcpConnectionCloseEvent를 리스닝합니다.
    • 로그 기록: logger.info를 사용하여 연결이 닫혔다는 정보를 로그로 남깁니다. e.getConnectionId()는 connectionId를 return 하는데 connectionId는 connection을 구분할수 있는 ID 입니다. TCP server에 client1과 client2가 각각 연결했으면 connectionId는 다른 값입니다.

     

    tcp 통신일 경우 Message header에 connectionId가 자동으로 설정되기 때문에 아래와 같이 @ServiceActivator 에서 Message header에서 ip_connectionId에서 조회할 수도 있습니다.

    @ServiceActivator(inputChannel = "inboundChannel")
    fun process(message: Message<ByteArray>): ByteArray? {
        val connectionId = message.headers["ip_connectionId"] as String

     

    참고자료

    https://docs.spring.io/spring-integration/reference/ip/tcp-events.html

    https://stackoverflow.com/questions/51200675/spring-integration-tcp-client-server-opening-one-client-connection-per-server-c

    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > spring, spring boot' 카테고리의 다른 글

    [Java] [Gradle] Your build is currently configured to use Java 21 and Gradle 7.6.1. 에러 수정  (0) 2024.07.17
    Spring Boot 의존성 확인 방법  (0) 2024.07.02
    [Spring Integration] [tcp server] 역직렬화 처리 시 주의사항  (0) 2024.06.17
    [JPA] MariaDB에서 PK를 날짜+sequence의 nextval의 조합으로 insert하는 방법  (0) 2024.06.13
    [WebSocket] [STOMP] client 테스트 방법  (0) 2024.06.11
      '개발/spring, spring boot' 카테고리의 다른 글
      • [Java] [Gradle] Your build is currently configured to use Java 21 and Gradle 7.6.1. 에러 수정
      • Spring Boot 의존성 확인 방법
      • [Spring Integration] [tcp server] 역직렬화 처리 시 주의사항
      • [JPA] MariaDB에서 PK를 날짜+sequence의 nextval의 조합으로 insert하는 방법
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바