2014-07-23 1 views
0

우리 응용 프로그램에서는 jdbc:inbound-channel-adapter을 사용하여 데이터베이스를 폴링합니다.메시지 끝점을 사용하여 테이블에 대한 단일 선택 트리거

새로운 요구 사항은 업스트림 시스템이 응용 프로그램에 메시지를 보내고이 메시지가 폴링 작업을 시작하도록 지정합니다.

경우에 따라 메시지에는 폴러가 SELECT에 사용해야하는 매개 변수가 포함됩니다. (현재 매개 변수는 폴러에서 select-sql-parameter-source을 사용하여 검색됩니다). 이 경우 애플리케이션은 실제로 폴링되지 않고 메시지 매개 변수를 기반으로 데이터 소스에 대해 단일 선택을 수행합니다.

메시지 끝점과 폴러를 통합하는 가장 좋은 방법은 무엇입니까?

또한 폴러가 소스 테이블에 대해 단일 일회용 선택을 수행하는 데 적합하지 않은 경우 대신 사용할 적절한 스프링 통합 구성 요소는 무엇입니까?

덕분에 시나리오가 event-driven라고

답변

1

같은. 이를 위해 <int-jdbc:outbound-gateway>을 사용할 수 있습니다.

<int:inbound-channel-adapter> 일반 메시지의 내용을 활용하여 polling 경우의 정적 메시지를 작성할 수있는 관심사가 무엇이 있습니까? 따라서 두 이벤트가 동일한 엔드 포인트를 사용하기 때문에 코드 중복이 발생하지 않습니다.

UPDATE

하자 이미징 우리는 이런 일이 :

<int-jdbc:outbound-gateway request-channel="selectChannel" 
     query="select * from bazz where id=:payload"/> 

그래서, 당신은 <gateway>에서 수동으로 selectChannelpayload 일부 id에 메시지를 보내거나 다른 인바운드 할 수 있습니다 외부 시스템을위한 어댑터, 예. <int-http:inbound-gateway>

당신이 poll 같은에 대한 요구 사항을 가지고 있기 때문에이 같은 그것을 극복 할 수 SELECT :

<int:inbound-channel-adapter expression="'foo'" channel="selectChannel"> 
    <int:poller fixed-delay="1000" max-messages-per-poll="1"/> 
</int:inbound-channel-adapter> 

그리고 expression의 결과는 각 pollselectChannel로 전송됩니다.

+0

Artem, thanks. 나는 네가 두 번째 요점을 확장 할 수 있을지 궁금해. 네가 의미하는 것이 분명하지 않다. – user1052610

+0

답변에 샘플을 추가했습니다. –

관련 문제