Java 带有receiveNoWait()的消息选择器

Java 带有receiveNoWait()的消息选择器,java,jms,selector,ibm-mq,Java,Jms,Selector,Ibm Mq,对于同步进程,消息选择器是否也将使用receiveNowait()方法。它与receive()方法一起工作,但希望了解IBM mq的receiveNoWait。 在创建使用者时添加消息选择器 编辑1: 我已经用receiveNowait()方法进行了测试,但是选择器不工作。我不知道问题出在我的选择器或receivenowait方法上。以下是我使用的选择器: String messageSelector = "JMSTimestamp <= " + System.currentTimeMil

对于同步进程,消息选择器是否也将使用receiveNowait()方法。它与receive()方法一起工作,但希望了解IBM mq的receiveNoWait。 在创建使用者时添加消息选择器

编辑1: 我已经用receiveNowait()方法进行了测试,但是选择器不工作。我不知道问题出在我的选择器或receivenowait方法上。以下是我使用的选择器:

String messageSelector = "JMSTimestamp <= " + System.currentTimeMillis() - 180000;
 receiver = (MessageConsumer) session.createConsumer(replyQueue, messageSelector);

String messageSelector=“jmstivestamp我不能具体谈论IBM MQ实现,但从JMS的角度来看,JMS规范中没有任何内容限制选择器与
receiveNoWait
的使用,因此我希望它能在任何兼容的实现中工作。

receive(),receive(长超时)与receiveNoWait()的工作原理应该完全相同。事实上,有几个实现通过调用另一个方法来实现一个方法。

p对系统进行了保护。运行选择器时,CurrentTimeMillis()值不会更新

在这里,您正在修复初始化选择器时的“当前”时间戳。
您应该执行类似“endValidityDate…您尝试过吗?”?知识中心中是否有任何东西表明它将不起作用?知识中心中没有任何东西,但甚至没有找到一个关于它的示例,因此有疑问。我现在就去试试。将查看它是否工作。正如@JustinBertram所指出的,我看不出它不工作的原因。根据我的测试结果,选择器不能与receiveNoWait一起工作。如果您使用
receive()
receive(long)
选择器是否按预期工作?我已编辑了我的问题,添加了选择器代码,请检查我已编辑了我的问题,添加了选择器代码,请检查您是否将其用于MQ JMS?我已经试过了,但我觉得没用。可能是MQ JMS中的错误?我有以下输出:选择器:jmstiestamp<1552325982237 JmsConsumer:waiting for message。。。。收到:JMSTimestamp:1552326165700是的,它不起作用,我也试过在操作符之间使用,它的工作方式不同