2015-01-14 5 views
0

요구 사항 : 4 개의 다른 JMS 대기열에서 읽을 수 있도록 MDB (Message-Driven Bean)가 필요하며 MDB는 대기열의 우선 순위에 따라 메시지를 읽어야합니다.Websphere의 JMS 대기열 우선 순위 문제

말 - 우선 JMS 대기열 A, B, C 및 D 중 우선 순위 8 (가장 높음), 7, 6 및 5가 있습니다. 따라서 큐 C에 500 개의 메시지가 있고 큐 A와 B가 비어있는 경우 내 MDB는 큐 C의 메시지를 소비해야합니다. 그러나 우선 순위가 높은 큐 (A 또는 B)에서 메시지를받는 순간에 MDB는 C에서 읽기를 중지하고 우선 순위가 높은 큐에서 메시지를 소비해야합니다 (큐가 비어있을 때까지)), 낮은 우선 순위 대기열에서 계속 소비합니다.

설정 완료 : WebSphere 7.0을 사용 중이며 관리 콘솔에서 JMS 대기열의 우선 순위를 올바르게 설정했습니다.

고급 속성

* 우선 순위 : 지정된

지정된 우선 순위 : 8 *

문제 : 하지만 여전히 내 MDB 예상대로 읽을 실패합니다. 내 요구 사항을 충족하기 위해 더 많은 구성이 필요합니다.

필요한 조치를 취하십시오. 미리 감사드립니다.

답변

0

MDB는 한 번에 하나의 대기열에서만 구동됩니다. 대기열의 메시지는 우선 순위에 따라 소비됩니다. 대기열에 설정된 우선 순위는 메시지를 보낼 때 우선 순위가 주어지지 않은 경우 메시지의 기본 우선 순위입니다.

따라서 대기열 집합간에 MDB 이동을 수행 할 수 없습니다.

단일 소비자가 항상 가장 우선 순위가 높은 메시지를 얻으려면 단일 대기열과 단일 MDB가 필요합니다. 다른 우선 순위를 처리하는 다른 MDB를 사용하여 여러 큐를 만들고 메시지를 분할하십시오.

0

시나리오의 경우 하나의 큐만 있으면되고 우선 순위가 다른 메시지를 큐에 넣을 수 있습니다. MDB는 우선 순위에 따라 메시지를 읽습니다. WebSphere의 대기열 설정에 우선 순위를 설정하지 마십시오. 그러나 메시지를 대기열에 넣는 동안 응용 프로그램이 우선 순위를 올바르게 설정해야합니다. MDB는 단일 대기열에서만 수신 대기합니다.