2017-10-08 3 views
0

특정 포트로 IP를 청취하고 메시지를 출력합니다. 샘플 메시지는 다음과 같다 :스프링 통합 TCP 토큰 별 그룹화

[LOG_PATTERN] ABC1025... 
[LOG_PATTERN] (XYZ-COULD-BE-A-MSG 
[LOG_PATTERN] -WITH-DASH 
[LOG_PATTERN] -SEPARATED-TEXT) 
[LOG_PATTERN] ABC1026... 
[LOG_PATTERN] (DEF-ANOTHER-SAME-KIND 
[LOG_PATTERN] -OF-DASH-SEPARATED-TEXT) 
[LOG_PATTERN] ABC1027... 
... 

어떻게 수 I 그룹 예를 들어, 시작과 끝 토큰을 지정하여 각 메시지. 따라서 ABC로 시작하면 다음 ABC를 찾을 때까지 다음 메시지를 결합/그룹화합니다. 감사합니다.

답변

0

맞춤형 비 직렬화기를 사용해야합니다. 디시리얼라이저는 the documentation here에 설명되어 있습니다.

TCP는 스트리밍 프로토콜입니다. 이는 TCP를 통해 전송되는 데이터에 일부 구조를 제공해야하므로 수신자가 데이터를 개별 메시지로 구분할 수 있음을 의미합니다. 연결 팩토리는 serializer를 사용하여 메시지 페이로드와 TCP를 통해 전송되는 비트를 변환하도록 구성됩니다. 이는 인바운드 및 아웃 바운드 메시지 각각에 대해 디시리얼라이저 및 시리얼 라이저를 제공하여 수행됩니다. 다수의 표준 (de) 시리얼 라이저가 제공됩니다.

... 콘텐츠에 (예를 들어 ) 귀하의 예제에서)이 아닌 새로운 시작을 검출 기반으로, 일련의 메시지의 끝을 감지 할 수있는 경우는 일반적으로 쉽게

. 다음 ABC...을 감지 한 후 바이트를 다시 표준 입력 스트림으로 "푸시"할 수 없습니다.

곧 5.0 릴리스 (현재 이정표 7 가능)는 (만 1 기본적으로 만 구성 가능) 바이트를 다시 밀어 수 있습니까 PushbackInputStream에 포장하여 InputStream을 사용자 정의 할 수 있습니다. 참조

Advanced Techniques ...

프레임 워크는 기본적으로 간단한 TcpNetConnection 객체를 생성하는 하나의 구현 DefatulTcpNetConnectionSupport을 제공합니다. 여기에는 pushbackCapable과 pushbackBufferSize의 두 가지 속성이 있습니다. push back가 유효하게되면 (자), 구현은 PushbackInputStream에 접속의 InputStream를 랩하는 서브 클래스를 돌려줍니다. PushbackInputStream 디폴트에 맞추어, 버퍼 사이즈의 디폴트는 1입니다. 이것에 의해, 디시ial 라이저는 바이트를 스트림에 「읽지 않는다」(push back) 할 수 있습니다.

이전 버전에서는 사전 읽기 바이트를 어딘가에 유지해야했습니다. 이 경우 다운 스트림 구성 요소에서 집계를 수행하는 것이 더 쉬울 수도 있습니다.

관련 문제