我已在activemq配置中激活优先级消息,并且优先级正常工作,即当我发送X消息时,其中一半优先级为0,其中一半优先级为9,消费者以正确的顺序接收消息
但是,当我使用CMSPriority > 0
或CMSPriority < 4
等选择器调用createConsumer()方法时,不会收到任何消息。
以下是相关的消费者代码:
mSession = mConnection->createSession(Session::INDIVIDUAL_ACKNOWLEDGE);
mDestination = mSession->createQueue( mDestURI );
mConsumer = mSession->createConsumer(mDestination, "CMSPriority < 4");
当我将最后一行更改为mConsumer = mSession->createConsumer(mDestination);
时,会收到所有消息,且优先级正确。
任何人都可以解释这种行为吗?
答案 0 :(得分:0)
C ++客户端不会将选择器语句转换为正常的JMS命名约定,JMSPriority是消息选择器的关键,尝试使用它并查看它是否解决了问题。