복붙노트

[SPRING] Spring 통합 - 프로그래밍 방식으로 채널 생성 / 분리

SPRING

Spring 통합 - 프로그래밍 방식으로 채널 생성 / 분리

프로그래밍 방식으로 스프링 통합 채널을 만들거나 티 아웃 할 수 있습니까? 스프링 구성에서 정적으로 선언하는 것과 반대입니까?

내 상황은 이렇습니다 :

푸시 알림이 필요한 webapp가 있으므로 긴 폴링을 사용하고 있습니다. 긴 폴링 호출은 이벤트가 발생할 때까지 서버에서 차단해야합니다.

내가 상상하고있는 것은 (물론 대안들에 개방되어있다.) 각 세션을위한 Spring Integration 큐 채널이다. 각각은 하나의 pubsub 채널을 듣고있다. 따라서 서버 이벤트가 발생하면 pubsub에 게시되어 개별 세션 대기열로 파이프되어 폴링 된 클라이언트로 전송됩니다.

이 작업을 수행하기 위해 세션이 생성되면 pubsub 채널에 새로운 대기열 채널 목록을 등록해야합니다. 세션이 파괴되면 새로운 대기열도 삭제됩니다.

이게 가능한가?

메시지를 잃어 버릴 위험이 있기 때문에 세션을 pubsub에서 직접 듣고 싶지 않으므로 메시지를 버퍼링하기 위해 큐를 갖고 싶습니다.

감사, 로이

해결법

  1. ==============================

    1.예, QueueChannel을 인스턴스화하고 BridgeHandler의 outputChannel으로 만들 수 있습니다. 그런 다음 생성자에서 pubSub 및 브리지 처리기를 전달하여 EventDrivenConsumer를 만듭니다.

    예, QueueChannel을 인스턴스화하고 BridgeHandler의 outputChannel으로 만들 수 있습니다. 그런 다음 생성자에서 pubSub 및 브리지 처리기를 전달하여 EventDrivenConsumer를 만듭니다.

    소비자가 pubSub에 가입하게하려면 start ()를 호출하고, 세션이 닫히면 stop ()을 사용하여 구독을 취소하십시오.

    이러한 구성 요소를 직접 배선하지 않으려면 대기열 채널을 선언하고 작은 응용 프로그램 컨텍스트에서 브리지하십시오. 그것을 주 컨텍스트의 하위로 만들고 상위 컨텍스트의 pubSub에 자동으로 가입합니다. context.destroy ()를 호출하여 연결을 끊습니다.

  2. from https://stackoverflow.com/questions/20126706/spring-integration-programmatically-create-teardown-channels by cc-by-sa and MIT license