2017-01-04 14 views
0

Tibco의 JMS 토픽에서 모든 메시지를 얻으려면 어떻게해야합니까?토픽의 모든 메시지 받기

내가 주제 구독자를 사용할 수 있음을 알고 있지만 내 요구 사항에 정확하게 부합하지 않습니다. 주제에서 모든 메시지를 읽고 처리하는 프로세스를 하루에 한 번만 시작하고 싶습니다. 동일한 프로세스에서 타이머와 주제 구독자를 둘 다 가질 수는 없습니다.

"JMS 토픽 메시지 대기"로 시도했지만, 주제가 얼마나 많은지 상관없이 하나의 메시지 만 얻는 것으로 보입니다.

답변

1

최상의 해결책은 JMS 항목을 대기열에 연결하고 프로세스 시작시 "JMS 대기열 수신자"활동을 사용하는 것입니다.

하루에 한 번 인스턴스를 시작하면 큐에있는 모든 메시지를 연결하고 처리합니다.

+0

나는이 솔루션을 생각하고 있었지만 브리징을 피하려고했습니다. –

+0

하나의 주제와 하나의 대기열 인 경우 단일 브릿지를 작성하는 것이 문제가되지 않아야합니다. 여러 주제와 대기열을 배치 파일로 만들 수 있습니다. 브리지는 (어떤 이유로) 나쁜 담당자를 얻는 것을 알고 있지만 일반적으로 문제를 일으키지 않습니다. –

+0

나는 다른 일을하는 방식을 택했으나 당신의 대답이 가장 좋은 것 같아서 받아 들였습니다. –

2

다른 방향으로 시도해 보겠습니다. 2 개의 개별 프로세스를 사용하여이를 구현할 수 있습니다.

하나의 프로세스는 모든 메시지를받는 주제 가입자 (내구성 포함)입니다. 이 프로세스 스타터는 기본적으로 비활성화되어야합니다 (따라서 리스너가 활성화되어 있지 않습니다).

두 번째 프로세스는 호크 (엔진 명령)를 통해 첫 번째 프로세스를 활성화하는 타이머입니다. 따라서 구독자가 활성화 될 때마다 이벤트 처리가 시작됩니다.

여기서 문제가되는 부분은 주제 구독자가 완료된 후 비활성화되는 부분입니다. 이를 위해서는 구독자를 비활성화 할 때 별도의 논리가 필요합니다. 이것은 가입자가 더 이상 메시지를 가지고 있지 않을 때 발생하는 별도의 타이머 또는 일부 호크 규칙 (Hawk Rule)에 의해 수행 될 수도 있습니다.

0

훨씬 더 자연스러운 솔루션 (구현할 수있는 경우)은 주제 구독자 (또는 주제가 대기열에 연결될 경우 대기열 가입자)를 구현하고 메시지가 게시 될 때마다 Business Objects 엔진이 작업 인스턴스를 생성하도록하는 것입니다 .

이렇게하면 주제 또는 대기열의 모든 메시지를받는 것보다 훨씬 더 균등하게 작업 부하를 분산시킬 수 있습니다.