2011-10-12 2 views
0

nms를 통해 메시지 우선 순위를 설정하는 데 문제가 있습니다. 메시지는 대기열로 보내지 만 모든 것이 정상이지만 우선 순위는 무시됩니다.ActiveMQ : 메시지 우선 순위 설정이 작동하지 않습니다.

나는 다음과 같은 코드를 사용

나는 우선 순위가 항상 나는 또한에 노력 4.

로 설정되어 있는지 볼 수 ActiveMQ를 브라우저를 사용하여, 메시지 우선 순위 설정 어떤 값에 관계없이

message.NMSPriority = MsgPriority.High; 

다음과 같은 원시 헤더를 추가하십시오.

message.Properties["priority"] = 2; 
message.Properties["PRIORITY"] = 5; 
message.Properties["NMSPriority"] = 7; 
message.Properties["JMSPriority "] = 9; 

그러나 도움이되지 않습니다.

나는 또한 activemq.xml 파일의 속성

prioritizedMessages="true" 

을 추가했습니다. 그리고 ActiveMQ 브라우저를 통해 우선적으로 메시지를 보낼 수 있습니다.

그래서 문제가 어디에 있습니까? 내가 뭘 잘못하고 있니?

답변

2

메시지 우선 순위는 메시지를 보내는 생산자가 항상 설정합니다. 클래스의 setter는 메시지를받은 후에 만 ​​값을 변경할 수 있으며 대개 단위 테스트 또는 제공자 간 메시지 변환에만 사용됩니다. 메시지 단위로 메시지 우선 순위를 설정하려면 MessageProducer 인터페이스에서 다양한 send 메소드를 살펴보십시오.

+1

대단히 고맙습니다. 내 문제가 해결되었습니다. 그러나 setter 클래스와 다른 것들을 통해서도 메시지 속성을 설정할 수 있지만 우선 순위는 설정할 수 없다는 것이 흥미 롭습니다. – Chris

+0

JMS API 문서에서 이와 같은 것들을 참조 할 수 있습니다. 다양한 setter는 전송 된 메시지에 적용 할 수없는 것을 나타내는 태그가 붙습니다 –