2014-11-02 4 views
3

Artem. Si의 새로운 버전을 만나서 반갑습니다. 스프링 통합 흐름에서 reactor 또는 rxjava를 사용할 수 있습니까? 예를 들어이스프링 통합 식 원자로

처럼 : 일부 컬렉션 입력 XML은 => 모두의 반응 splitter-> 반응에 변압기> 반응 아웃 바운드

답변

2

첫 번째는 피드백과 우리의 작업에 관심을 주셔서 감사합니다. 우리는 현실 세계의 추세를 따라 가려고 노력하고 있으며 항상 제 시간에 갈 것입니다 .--).

음, Reactor 또는 유사한 Reactive Streams 솔루션에 관한 것.

"스크래치"흐름을 수행하는 것이 좋습니다. Spring Integration이 Reactive Streams처럼 보이는 한, 우리는 그런 식으로 결합해야합니다.

먼저 Spring Integration은 Spring Container를 요구하는 '관리되는'흐름 광고이므로, Reactor와 결합하려면 Stream을 제공하는 코드에서 Spring Container에 액세스해야합니다. 다른 쪽에서는 Spring Integration의 Reactor Stream에 접근 할 수 있도록 Spring bean으로 만들어야합니다.

곧 출시 될 Spring Integration 4.1에는 Promise<?> Gateway이 도입되었습니다. Controller 또는 Service이 Spring bean이고 코드가 Reactor Stream을 통해 작성되는 경우 게이트웨이 인터페이스를 사용하는 Spring Integration 플로우에 액세스 할 수 있으며 해당 Integration Flow의 결과는 다음 Stream Action에 Event으로 채워집니다.

pull 대신에 스프링 통합을위한 push 조치가 필요한 경우 이와 유사한 방식으로 수행 할 수 있습니다.

어쨌든
<outbound-channel-adapter channel="reactorStreamChannel" ref="reactorStream" method="accept"/> 

나는 하나의 '세계'에서 이동하지 않는 것이 좋습니다 : 우리가 가서 channel-adapter에서 사용할 수 있습니다 그 후

@Bean 
public Deffered<Integer, Stream<Integer>> reactorStream() { 
    Deferred<Integer, Stream<Integer>> stream = Streams.<Integer>defer(new Environment()); 
    stream.compose().collect(5).timeout(1000); 
    return stream; 
} 

:

는 원자로에게 Deffered 콩이 있다고 가정 항상 '다른'것입니다. 왜냐하면 우리는 그들 모두로부터 최선을 잃을지도 모르기 때문입니다. 또는 Reactor Stream은 모든 Spring 통합의 주요 흐름입니다.

저는 원자로 팀의 다른 생각을 듣고 기쁘게 생각합니다 .--).