Programing/Spring

Spring Integration

BeomJun.Kwon 2022. 3. 25. 13:14

Spring Integration

- 라이트한 메시징 기반 서비스 제공 및 선언적 어뎁터를 사용해 외부 시스템과의 통합

- Spring Integration Message: 메타데이터와 함께 결합되어 있는 일련의 자바 오브젝트를 위한 포괄적인 레퍼를 말함

- Enterprise Integration Patterns에 나오는 패턴들을 스프링 프레임워크에 구현

- 엔터프라이즈 환경에서 여러 서비스, 애플리케이션 간 발생할 수 있는 작업 플로우를 파이프라인 형식으로 구성할 수 있으며 주어진 시나리오를 커버할 수 있는 적절한 컴포넌트를 적절한 단계에 사용함으로써 재사용성과 테스트성을 높인 프레임워크

 

 

Message

- header, payload로 구성되어 있는, 내용을 포함하고 있는 generic wrapper. 컴포넌트 간에 이동되는 실제 데이터이다.

Message Header

 Header Name  Header Type
 ID  java.util.UUID
 TIMESTAMP  java.lang.Long
 CORRELATION_ID  java.lang.Object
 REPLY_CHANNEL  java.lang.Object ( can be a String or MessageChannel )
 ERROR_CHANNEL  java.lang.Object ( can be a String or MessageChannel )
 SEQUENCE_NUMBER  java.lang.Integer
 SEQUENCE_SIZE  java.lang.Integer
 EXPIRATION_DATE  java.lang.Long
 PRIORITY  java.lang.Integer

 

 

 

Message Channel

- pipes-and-filters 모델의 pipe

- 컴포넌트간의 메세지 중간 통로 역할

- 하나의 consumer가 메세지를 받을 수 있는 point-to-point

- 다수의 subscriber가 메세지를 broadcast 받을 수 있는 publish-subscribe 모델

- 메세지 채널의 다른 하나의 중요 기능은 메세지 버퍼 역할을 할 수 있는 큐로써 동작

 

 

 

Message Endpoint

- spring integration 상에서 채널을 통해서 메세지를 받고 소비하는 주체

- 엔드포인트란 spring integration이 구성할 파이프라인의 최종 끝단이 아니라, 파이프라인의 중간에서 메세지를 변경하거나 필터링하거나 또는 여러 다른 채널로 라우팅하는 요소

- 작업 타입에 따라 크게 그 종류를 나눔.

Transformer(변형), Filter(필터링), Router(메세지를 특정 채널로 전송), Splitter(메세지를 분리하여 여러 채널로 전송), Aggregator(splitter의 반대), Service Activator(메세지로 특정 작업을 수행할 수 있는 핸들러를 붙일 수 있는 엔드포인트), Channel Adapter(외부 시스템과 입출력이 가능)

 

 

 

Spring Doc

https://docs.spring.io/spring-integration/reference/html/index.html

 

 

 

Messaging Bridge

 

<bridge> 엘리먼트와 input-channel, output-channel 어트리뷰트를 사용해서 두 채널이나 채널 어댑터 사이의 메시징 브리지를 설정

1
<int:bridge input-channel="input" output-channel="output"/>

 

메시징 브리지는 주로 PollableChannel 타입의 채널을 SubscribableChannel 타입 채널로 연결할 경우 사용, 이경우 설정된 메시징 브리지는 주로 메시지 유입량 조정역할

 

1
2
3
<int:bridge input-channel="pollable" output-channel="subscribable">
    <int:poller max-messages-per-poll="10" fixed-rate="5000" />
</int:bridge>

 

위 설정의 경우 poller 설정에 의해 pollable 채널에서 5초에 한번씩 최대 10번의 메시지 폴링작업을 수행해서 subscribable 로 메시지를 전달. 따라서 subscribable 채널은 브리지의 폴러에 의해 유입량을 조정받는다고 볼 수 있음.

output-channel 어트리뷰트를 명시하지 않았을 경우는 인바운드 메시지의 응답 채널 정보를 사용하지만 인바운드 메시지에도 응답 채널정보가 없을 경우는 예외가 발생

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(참조) https://springsource.tistory.com/47

(참조) https://springsource.tistory.com/51?category=467920 

(참조) https://rura6502.tistory.com/entry/Spring-Integration-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90

 

 

 

'Programing > Spring' 카테고리의 다른 글

Spring-Boot와 호환되는 라이브러리 버전 정보 확인 방법  (0) 2023.10.24
Json / Jackson / JsonNode / ObjectNode  (0) 2022.03.24
RequestContextHolder  (0) 2022.03.21
XML Handler Mapping  (0) 2022.03.11
Spring Annotation 활성화  (0) 2022.03.11