2012-12-21 5 views
3

나는 스프링 통합으로 백엔드를 개조하려는 시스템을 가지고 있습니다.HTTP 아웃 바운드 게이트웨이로의 비동기 호출

이 시스템의 패턴 중 일부는 여러 요청과 약간 다른 매개 변수를 사용하여 동일한 웹 서비스 및/또는 HTTP 서버 (둘 다 보유하고 있음)를 조사합니다. 결과는 함께 집계되어 사용자에게 제공됩니다.

요청이 게이트웨이를 통해 들어오는 동기 모드에서 정상적으로 작동하고 각 통화에 대한 키 값이 포함 된 메시지로 "분할"됩니다 A, B와 통화, XYZ와 통화). 그런 다음 각 메시지는 HTTP 아웃 바운드 게이트웨이로 이동하고 호출이 수행되어 반환됩니다. 그런 다음 결과는 함께 집계되어 게이트웨이를 통해 다시 배송됩니다.

저는이 HTTP 호출을 비동기 적으로 작성하는 데 어려움을 겪고 있습니다. 현재 시스템은 Futures를 사용하여 각 호출을 별도의 스레드로 만듭니다. 비슷한 패턴을 원합니다.

내가해야 할 일은 HTTP 아웃 바운드 게이트웨이를 래핑하고 반환 값을 사용하여 비동기 호출을 만드는 두 번째 게이트웨이를 만드는 것입니다. 그러나 이것이 집계에서 어떻게 작동하는지 확신 할 수 없으며 깨끗한 방법이 있어야한다고 생각합니다. 3 년 만에 Spring Integration을 사용할 기회가 없었기 때문에 모든 것을 다시 배우려고했습니다.

내가 누락되었거나 어떻게해야합니까?

답변

3

아웃 바운드 - 게이트웨이가 가입 된 채널 ExecutorChannels (http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#executor-channelhttp://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-executorchannel) 만 만들 수 있습니다.

그런 식으로 각 요청은 별도의 스레드에서 실행됩니다. 집계 릴리스는 최종 응답을 수신하는 스레드에서 발생합니다. 원래 스레드는 게이트웨이에서 응답을 기다립니다 (또는 비동기 게이트웨이를 사용하여 미래를 기다릴 수 있습니다.)

+0

감사합니다. 내가 놓친 "명백한"것이 었음을 알았습니다. 장애 조치 방법을 이해해야합니다. 지금 일할거야. –

관련 문제