토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 인티그레이션 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


좀 더 자세한 내용이 알고 싶다면, 5.5 버전 개발 과정에서 해결 처리된 Issue Tracker 티켓들을 참고해라.

목차


4.1. New Components

4.1.1. File Aggregator

CorrelationStrategy, ReleaseStrategy, MessageGroupProcessorFileSplitter.FileMaker 기반 구현체 FileAggregator를 도입했다. 자세한 내용은 File Aggregator를 참고해라.

4.1.2. MQTT v5 Support

MQTT v5 프로토콜 통신 지원을 위해 Mqttv5PahoMessageDrivenChannelAdapter, Mqttv5PahoMessageHandler(각각의 MqttHeaderMapper도 포함해서)를 도입했다. 자세한 내용은 MQTT v5 지원을 참고해라.


4.2. General Changes

모든 영구persistent MessageGroupStore 구현체는 타겟 데이터베이스의 스트리밍 API를 기반으로 streamMessagesForGroup(Object groupId) 인터페이스를 구현한다. 자세한 내용은 메시지 스토어를 참고해라.

integrationGlobalProperties 빈은 (선언했다면) 이제 반드시 java.util.Properties 대신 org.springframework.integration.context.IntegrationProperties의 인스턴스여야 한다. java.util.Properties는 이전 버전과의 호환성을 위해 deprecated시킨 상태다. 글로벌 디폴트 errorChannel을 반드시 requireSubscribers 옵션으로 설정해야 하는지 여부를 표현하는 글로벌 프로퍼티 spring.integration.channels.error.requireSubscribers=true가 추가됐다. 글로벌 디폴트 errorChannel이 반드시 디스패칭 에러를 무시하고 다음 핸들러로 메시지를 전달해야 하는지 여부를 표현하는 글로벌 프로퍼티 spring.integration.channels.error.ignoreFailures=true를 추가했다. 자세한 내용은 글로벌 프로퍼티를 참고해라.

AbstractPollingEndpoint(소스 폴링 채널 어댑터와 폴링 컨슈머)는 maxMessagesPerPoll == 0을 소스 호출을 건너뛰라는 의미로 받아들인다. 이 값은 나중에 컨트롤 버스 등을 통해 다른 값으로 변경할 수 있다. 자세한 내용은 폴링 컨슈머를 참고해라.

ConsumerEndpointFactoryBean은 이제 입력 채널로 사용하는 리액티브 스트림 소스를 위한 reactiveCustomizer Function을 받으며, 내부에선 ReactiveStreamsConsumer를 사용한다. 이 기능은 Java DSL의 ConsumerEndpointSpec.reactive() 옵션과 메시지 처리 어노테이션에 중첩해서 쓰는 @Reactive 어노테이션으로 커버한다. 자세한 내용은 리액티브 스트림즈 지원을 참고해라.

correlation 메시지 핸들러(AggregatorResequencer)의 groupTimeoutExpression은 이제 java.util.Date로 평가해서 스케줄링 정책을 세세하게 조정할 수 있다. 또한 AbstractCorrelatingMessageHandler에는 BiFunction groupConditionSupplier 옵션이 추가돼서, 그룹에 추가하는 메시지를 참고해 MessageGroup condition을 제공할 수 있다. 자세한 내용은 Aggregator를 참고해라.

MessageGroup 인터페이스를 condition과 함께 제공하면, 이후 이 condition을 평가해 그 그룹에 대한 결정을 내릴 수 있다. 자세한 내용은 메시지 그룹 Condition을 참고해라.

4.2.1. Integration Flows Composition

팩토리 메소드 IntegrationFlows.from(IntegrationFlow)가 새로 추가되어 기존 플로우의 출력에서부터 현재 IntegrationFlow를 시작할 수 있다. 또한 IntegrationFlowDefinition엔 터미널 연산자 to(IntegrationFlow)가 추가돼서, 다른 플로우의 입력 채널에서 현재 플로우를 이어갈 수 있다. 자세한 내용은 통합 플로우 조립을 참고해라.

4.2.2. AMQP Changes

AmqpInboundChannelAdapterAmqpInboundGateway는 (그리고 각각의 Java DSL 빌더도) 이제 범용 RecoveryCallback 대신 쓸 수 있는 AMQP 전용 org.springframework.amqp.rabbit.retry.MessageRecoverer를 지원한다. 자세한 내용은 AMQP 지원을 참고해라.

4.2.3. Redis Changes

ReactiveRedisStreamMessageProducer는 이제 onErrorResume 함수를 비롯한 모든 StreamReceiver.StreamReceiverOptionsBuilder 옵션을 위한 setter를 가지고 있다. 자세한 내용은 Redis 지원을 참고해라.

4.2.4. HTTP Changes

HttpRequestExecutingMessageHandler는 더 이상 컨텐츠 타입 application/x-java-serialized-object로 폴백하지 않으며, RestTemplate이 설정에 있는 HttpMessageConverter를 기반으로 요청 바디를 어떻게 변환할지 최종적으로 결정한다. 또한 HttpRequestExecutingMessageHandler는 이제 extractResponseBody 플래그를 가져서 (디폴트는 true다), 설정한 expectedResponseType과는 상관 없이 응답 바디만 반환하거나 전체 ResponseEntity를 응답 메시지 페이로드로 반환할 수 있다. WebFluxRequestExecutingMessageHandler도 동일한 옵션을 제공한다. 자세한 내용은 HTTP 지원을 참고해라.

4.2.5. File/FTP/SFTP Changes

영구persistent 파일 리스트 필터는 이제 boolean 프로퍼티 forRecursion을 가진다. 이 프로퍼티를 true로 설정하면 alwaysAcceptDirectories도 함께 세팅된다. 즉, 아웃바운드 게이트웨이에 대한 재귀 연산은 (ls, mget) 이제 매번 전체 디렉토리 트리를 순회하게 된다. 이렇게 하는 이유는 디렉토리 트리 깊은 곳에서 변경 사항이 생기면 감지하지 못하는 문제가 있었기 때문이다. 또한 forRecursion=true를 설정하면 파일의 전체 경로를 메타데이터 스토어 키로 사용하게 된다. 덕분에 여러 디렉토리에 같은 이름을 가진 파일이 여러 개 있을 때 필터가 제대로 동작하지 않던 문제가 해결된다. 주의해야 할 점은, 최상위 디렉토리 밑에 있는 파일에선 영구persistent 메타데이터 스토어에 있던 기존 키를 찾을 수 없게 된다. 이러한 이유로 이 프로퍼티의 기본값은 false다. 향후 릴리즈에선 변경될 수 있다.

FileInboundChannelAdapterSpec에는 이제 recursive(boolean) 옵션이 있어서 RecursiveDirectoryScanner에 대한 참조를 명시하지 않아도 된다.

이제 mv 커맨드에서 간편하게 remoteDirectoryExpression을 사용할 수 있다.

4.2.6. MongoDb Changes

MongoDd Java DSL에 MongoDbMessageSourceSpec이 추가됐다. 이제 update 옵션을 MongoDbMessageSourceReactiveMongoDbMessageSource 구현체 모두에서 사용할 수 있다.

자세한 내용은 MongoDb 지원을 참고해라.

4.2.7. WebSockets Changes

이제 ServerWebSocketContainer를 기반으로 동작하는 웹소켓 채널 어댑터를 런타임에 등록하고 제거할 수 있다.

자세한 내용은 WebSockets 지원을 참고해라.

4.2.8. JPA Changes

JpaOutboundGateway는 이제 PersistMode.DELETE를 위한 Iterable 메시지 페이로드를 지원한다.

자세한 내용은 아웃바운드 채널 어댑터를 참고해라.

4.2.9. Gateway Changes

이전에는 XML 설정을 사용할 땐, 인자가 없는 메소드에선 @Gateway.payloadExpression을 무시했었다. 한 가지 큰 변화가 있는데, 이전에는 메소드에 @Payload@Gateway 어노테이션을 함께 선언했다면 (다른 표현식을 사용해서) @Payload가 적용됐지만, 이제는 @Gateway.payloadExpression이 적용된다. 자세한 내용은 어노테이션과 XML을 이용해 게이트웨이 설정하기인자를 받지 않는 메소드 호출하기를 참고해라.


Next :
Overview of Spring Integration Framework
스프링 인티그레이션 소개

전체 목차는 여기에 있습니다.

<< >>

TOP