2015-01-30 3 views
1

스프링 통합을 사용하면 프로그램이 실행될 때 추가 인바운드 채널 어댑터를 동적으로 생성 할 수 있습니까?스프링 통합 동적 인바운드 채널

배경 : 저는 SI와 S-Batch에 새로운 경험이 있습니다. SB에서 작업을 생성하는 데 사용하는 정보에 대해 SI를 사용하여 db를 폴링합니다. 본질적으로 DB에서 가져온 레코드가 작업으로 전환해야하는 경우에 대한 비즈니스 규칙이 있습니다. 각 규칙에 대해 인바운드 채널 어댑터를 만들 계획입니다. 예를 들어, 초기 상태의 항목에 대한 규칙은 다음과 같습니다

<int-jdbc:inbound-channel-adapter query="select [id] from [MY_DATA] where status_name = 'INITIAL'" .... />

나는 규칙 정보를 검색하고 어댑터로 구문 분석 계획. 위의 하드 코딩 된 규칙 대신 status_name "INITIAL"을 db에서 검색하여이를 사용하여 어댑터를 빌드합니다.

답변

1

네, 그렇게 할 수 있습니다. SourcePollingChannelAdapter을 인스턴스화하고 beanFactoryoutputChannel과 같은 기타 중요한 옵션을 MessageSource<?>으로 설정해야합니다. 그 후 당신은 start() 첫 번째 폴링을 시작해야합니다.

하지만 ... 그게 필요합니까? 제발 좀 더 구체적으로 말하십시오. 그 이유는 무엇입니까?

은 아마도 관리되는 구성 요소와 또 다른 해결책이? ..

UPDATE

SourcePollingChannelAdapter 폴링 (일정) 및 MessageChannel을 관리 할 수있는 주요 요소입니다. 메시지를 생성하기위한 어려운 작업은 MessageSource<?>의 어깨에 놓여 있습니다. JDBC의 경우에는 JdbcPollingChannelAdapter이 있습니다.

예, 동적 어댑터의 경우 서비스 BeanFactoryMessageChannel을 주입해야합니다. 동적 어댑터를 응용 프로그램 컨텍스트로 다시 채울 수 있는지 확신하지 못합니다.

더 많은 정보를 원하시면,이 예제를 참조하십시오 : 답장을 https://github.com/spring-projects/spring-integration-samples/tree/master/advanced/dynamic-ftp

+0

안녕하세요, 감사합니다! 배경 정보로 Q를 업데이트했습니다. 희망이 도움이됩니다! – Nixx

+0

좋습니다. 이상적으로 나는 그걸로 자고 싶다 :-). 하지만 JDBC를 사용하여 모든 노력을 다하는 일부 서비스 메소드에 대해 폴러를 한 개만 갖는 것이 더 좋지 않을지 ... –

+0

답변을 조금 늘리시겠습니까? SourcePollingChannelAdapter는 int-jdbc : inbound-channel-adapter가 무대 뒤에서 생성하는 것입니까? 난 그냥 기본 애플 리케이션의 컨텍스트를 잡고 그것으로 ala ConfigurableListableBeanFactory 내 새로운 어댑터를 삽입할까요? 이 기능이 채널에 올바르게 연결 되나요? – Nixx

관련 문제