对于同步进程,消息选择器是否也适用于receiveNowait()方法。它适用于receive()方法,但想知道IBM mq的receiveNoWait。创建使用者时添加消息选择器。
编辑1:我已经使用receiveNowait()方法进行了测试,并且选择器无法正常工作。我不知道问题出在我的选择器或receivenowait方法上。以下是我使用的选择器:
String messageSelector = "JMSTimestamp <= " + System.currentTimeMillis() - 180000;
receiver = (MessageConsumer) session.createConsumer(replyQueue, messageSelector);
这意味着,接收方必须只接收比当前时间早3分钟的消息。任何人都可以找出问题所在。
编辑2:完成测试后,我发现问题在于选择器,在选择器表达式中JMSTimeStamp的正确用法是什么?
receive(),receive(long timeout)和receiveNoWait()在传递的内容方面应该完全相同。事实上,有几个实现通过调用另一个方法实现一个
我不能特别谈到IBM MQ实现,但是从JMS的角度来看,JMS规范中没有任何内容限制使用receiveNoWait
选择器的使用,所以我希望它可以在任何兼容的实现中工作。