스프링 인티그레이션 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
지금까지 논의한 바와 같이, Spring Integration은 애플리케이션을 외부 시스템이나 파일 시스템 등과 이어주는 다양한 엔드포인트를 제공한다.
Spring Integration은 BOMbill-of-materials POM을 제공하으며, 메이븐 설정으로 임포트하기만 하면 알아서 의존성을 관리해준다:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>5.5.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
다시 정리하자면:
- 인바운드 채널 어댑터는 메시징 애플리케이션으로 데이터를 가져오는 단방향 플로우에 사용한다.
- 아웃바운드 채널 어댑터는 메시징 애플리케이션 밖으로 데이터를 전송하는 단방향 플로우에 사용한다.
- 인바운드 게이트웨이는 타 시스템이 메시징 애플리케이션을 호출해 응답을 수신해가는 양방향 통합 플로우에 사용한다.
- 아웃바운드 게이트웨이는 메시징 애플리케이션이 외부 서비스나 엔티티를 호출하고 그 결과로 처리를 이어가는 양방향 통합 플로우에 사용한다.
다음은 다양한 엔드포인트들을 전용 링크와 함께 요약해둔 테이블이다.
Module |
Inbound Adapter |
Outbound Adapter |
Inbound Gateway |
Outbound Gateway |
AMQP |
Inbound Channel Adapter |
Outbound Channel Adapter |
Inbound Gateway |
Outbound Gateway |
Events |
Receiving Spring Application Events |
Sending Spring Application Events |
N |
N |
Feed |
Feed Inbound Channel Adapter |
N |
N |
N |
File |
Reading Files, ‘tail’ing Files |
Writing files |
N |
Writing files |
FTP(S) |
FTP Inbound Channel Adapter |
FTP Outbound Channel Adapter |
N |
FTP Outbound Gateway |
Gemfire |
Inbound Channel Adapter, Continuous Query Inbound Channel Adapter |
Outbound Channel Adapter |
N |
N |
HTTP |
HTTP Namespace Support |
HTTP Namespace Support |
Http Inbound Components |
HTTP Outbound Components |
JDBC |
Inbound Channel Adapter, Stored Procedure Inbound Channel Adapter |
Outbound Channel Adapter, Stored Procedure Outbound Channel Adapter |
N |
Outbound Gateway, Stored Procedure Outbound Gateway |
JMS |
Inbound Channel Adapter, Message-driven Channel Adapter |
Outbound Channel Adapter |
Inbound Gateway |
Outbound Gateway |
JMX |
Notification-listening Channel Adapter, Attribute-polling Channel Adapter, Tree-polling Channel Adapter |
Notification-publishing Channel Adapter, Operation-invoking Channel Adapter |
N |
Operation-invoking Outbound Gateway |
JPA |
Inbound Channel Adapter |
Outbound Channel Adapter |
N |
Updating Outbound Gateway, Retrieving Outbound Gateway |
Apache Kafka |
Message Driven Channel Adapter, Inbound Channel Adapter |
Outbound Channel Adapter |
Inbound Gateway |
Outbound Gateway |
Mail |
Mail-receiving Channel Adapter |
Mail-sending Channel Adapter |
N |
N |
MongoDB |
MongoDB Inbound Channel Adapter |
MongoDB Outbound Channel Adapter |
N |
N |
MQTT |
Inbound (Message-driven) Channel Adapter |
Outbound Channel Adapter |
N |
N |
R2DBC |
R2DBC Inbound Channel Adapter |
R2DBC Outbound Channel Adapter |
N |
N |
Redis |
Redis Inbound Channel Adapter, Redis Queue Inbound Channel Adapter, Redis Store Inbound Channel Adapter, Redis Stream Inbound Channel Adapter |
Redis Outbound Channel Adapter, Redis Queue Outbound Channel Adapter, RedisStore Outbound Channel Adapter, Redis Stream Outbound Channel Adapter |
Redis Queue Inbound Gateway |
Redis Outbound Command Gateway, Redis Queue Outbound Gateway |
Resource |
Resource Inbound Channel Adapter |
N |
N |
N |
RMI |
N |
N |
Inbound RMI |
Outbound RMI |
RSocket |
N |
N |
RSocket Inbound Gateway |
RSocket Outbound Gateway |
SFTP |
SFTP Inbound Channel Adapter |
SFTP Outbound Channel Adapter |
N |
SFTP Outbound Gateway |
STOMP |
STOMP Inbound Channel Adapter |
STOMP Outbound Channel Adapter |
N |
N |
Stream |
Reading from Streams |
Writing to Streams |
N |
N |
Syslog |
Syslog Inbound Channel Adapter |
N |
N |
N |
TCP |
TCP Adapters |
TCP Adapters |
TCP Gateways |
TCP Gateways |
UDP |
UDP Adapters |
UDP Adapters |
N |
N |
WebFlux |
WebFlux Inbound Channel Adapter |
WebFlux Outbound Channel Adapter |
Inbound WebFlux Gateway |
Outbound WebFlux Gateway |
Web Services |
N |
N |
Inbound Web Service Gateways |
Outbound Web Service Gateways |
Web Sockets |
WebSocket Inbound Channel Adapter |
WebSocket Outbound Channel Adapter |
N |
N |
XMPP |
XMPP Messages, XMPP Presence |
XMPP Messages, XMPP Presence |
N |
N |
ZeroMQ |
ZeroMQ Inbound Channel Adapter |
ZeroMQ outbound Channel Adapter |
N |
N |
그 외에도 Spring Integration은 Core Messaging에서 설명한 것처럼 POJOPlain Old Java Objects를 통해 실행할 수 있는 엔드포인트들을 제공한다. 채널 어댑터에서 설명했듯이, <int:inbound-channel-adapter>
요소를 사용하면 자바 메소드로 데이터를 폴링할 수 있다. <int:outbound-channel-adapter>
요소로는 void
메소드로 데이터를 전송할 수 있다. Messaging Gateways에서 논의한 것처럼, <int:gateway>
요소는 어떤 자바 프로그램이든지 메시지 처리 플로우를 실행할 수 있게 해준다. 이 요소들은 모두 소스 단에서 Spring Integration 의존성을 요구하지 않는다. 아웃바운드 게이트웨이에 해당하는 엔드포인트는 서비스 액티베이터로, 일종의 Object
를 반환하는 메소드를 호출할 수 있다 (서비스 액티베이터 참고).
5.2.2
버전부터, 모든 인바운드 게이트웨이는 boolean 플래그 errorOnTimeout
을 설정해서, 다운스트림 플로우가 제한 시간 안에 응답을 반환하지 않으면 MessageTimeoutException
을 발생시킬 수 있다. 이땐 게이트웨이로 스레드 제어가 넘어올 때까지 타이머를 시작하지 않으므로, 이 플래그는 보통 다운스트림 플로우가 비동기로 동작하거나 특정 핸들러에서 (ex. 필터) null
을 반환해 플로우가 중단되는 상황에서만 유용하다. 이때 발생하는 예외는 errorChannel
플로우에서 요청한 클라이언트에 보상 응답을 전송하는 식으로 처리할 수 있다.
Next :
Spring ApplicationEvent Support
ApplicationEvents를 받아 메시지를 전달하고, 메시지를 받아 ApplicationEvents를 전송하는 방법
전체 목차는 여기에 있습니다.