2013-07-12 6 views
0

IBM은 JMS MDP (Message Driven POJO)와 함께 JMS 공급자로 IBM WebSphere MQ를 사용하고 있습니다.정의 된 시간을 기준으로 한 JMS의 메시지 스케줄링/소비

특정 정의 된 시간에만 메시지를 사용할 수 있도록 메시지에서 시간 관련 등록 정보를 구성 할 수있는 JMS에는 어떤 방법이 있습니까?

예를 들어, M1, M2 및 M3 대기열에 세 개의 메시지를 보내는 경우. 어디서 오전 3시에 M2 메시지 속성을 구성 할 수 있습니까? 소비자 측은 소비자가이 메시지를 오전 3시에만 선택할 수 있습니다. 시간이 정의되어 있지 않으면 JMS Receiver가 수행하는 방식으로 메시지를 사용해야합니다.

답변

0

JMS 2.0 사양에는 Delivery Delay이 정의되어 있습니다. 이 기능을 사용하면 메시지 생성자는 지정된 시간이 끝날 때까지 메시지가 배달되지 않아야한다고 지정할 수 있습니다. interval. 메시지는 지정된 시간 이후에 배달 가능합니다. 그러나 이것은 지정된 시간에 메시지가 소비되기를 원하는 것처럼 당신을 도울 수 없습니다. 일반적으로 메시징 응용 프로그램은 메시징 공급자가 메시지를 사용할 수있게되는 즉시 메시지를 사용하도록 설계되었습니다.

+0

네, 맞습니다. 이것은 지정된 시간에 메시지를 소비하는 데 도움이되지 않을 수 있습니다. 쿼츠 스케줄링 개념을 JMS와 통합 할 방법이 있다면 확실하지 않습니다. –

0

메시지를 지정된 시간에만 처리하려면 다른 대기열 "queue_3am"을 만들고 독자가 오전 3시에 정확하게 실행되도록 예약 할 수 있습니다.

변형은 타임 스탬프를 메시지 속성으로 설정하는 것입니다. 그래서 하나의 큐는 다른 시점에서 처리 될 메시지를 포함 할 수 있습니다. 독자는 메시지 선택자를 사용하여 관련 메시지 만 얻을 수 있습니다.

그러나 메시지 속성으로 두 개의 타임 스탬프를 추가하여 "메시지 픽업 시간 프레임"을 사용해야합니다. eaxmple에 대해 1 또는 5 분으로 설정하십시오.

수신자는 메시지 선택자를 사용할 수 있습니다. 선택자는 메시지 등록 정보를 사용하는 조건입니다.

살펴보기 this

+0

답장을 보내 주셔서 감사합니다. 이 접근 방식에 문제가 있습니다. 특정 메시지는 매일 3AM으로 처리되어야한다고 말하면됩니다. 이 접근 방식을 사용하면 3AM에서 메시지를 선택하는 메시지 선택기 속성을 정의 할 수 있습니다. 전후에도. 이제 대기열에 10 개의 메시지가 있고 모든 메시지가 처리 시간이 3AM이라고 가정 해 봅시다. 소비자가 3AM에서 첫 번째 메시지를 선택하고 메시지를 처리하는 데 10 분이 소요된다고 가정합니다. 지금은 오전 3시 10 분입니다. 다른 나머지 메시지는 오전 3시에 처리되도록 정의됩니다. 이 경우 소비자 측 소비자 시간은 3.10 AM이므로 다른 소비자는 절대로 다른 메시지를 선택하지 않습니다. –

+0

오전 3시에 * n * 개의 메시지를 받기 위해 * n * 독자를 가질 수 있습니다. 다른 방법은 처리가 시작되기 전에 오전 3시에 선택기와 일치하는 모든 메시지를 읽는 것입니다. – Beryllium