0

我在activemq配置中激活了prioritydMessages,优先级工作正常,即当我发送X条消息时,其中一半优先级为0,一半优先级为9,消费者以正确的顺序接收消息。

但是,当我使用CMSPriority > 0or等​​选择器调用 createConsumer() 方法时CMSPriority < 4,没有收到任何消息。

这是相关的消费者代码:

mSession = mConnection->createSession(Session::INDIVIDUAL_ACKNOWLEDGE);
mDestination = mSession->createQueue( mDestURI );
mConsumer = mSession->createConsumer(mDestination, "CMSPriority < 4");

当我将最后一行更改为 时mConsumer = mSession->createConsumer(mDestination);,将收到所有消息,并具有正确的优先级。

谁能解释这种行为?

4

1 回答 1

0

C++ 客户端不会做任何魔术来将选择器语句转换为正常的 JMS 命名约定,JMSPriority 是消息选择器的关键,尝试使用它并查看它是否解决了问题。

于 2013-06-11T17:22:42.240 回答