为了账号安全,请及时绑定邮箱和手机立即绑定

带有 receiveNoWait() 的消息选择器

带有 receiveNoWait() 的消息选择器

倚天杖 2022-07-20 19:26:57
消息选择器是否也可以与 receiveNowait() 方法一起用于同步过程。它适用于receive() 方法,但想知道IBM mq 的receiveNoWait。创建消费者时添加消息选择器。编辑 1:我已经使用 receiveNowait() 方法进行了测试,并且选择器不起作用。我不知道问题出在我的选择器或 receivenowait 方法上。以下是我使用的选择器:String messageSelector = "JMSTimestamp <= " + System.currentTimeMillis() - 180000;  receiver = (MessageConsumer) session.createConsumer(replyQueue, messageSelector);这意味着,接收者只能接收比当前时间早 3 分钟的消息。谁能弄清楚是什么问题。编辑2:完成测试后,我发现问题出在选择器上,JMSTimeStamp 在选择器表达式中的正确用法是什么?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

pepared system.currnetTimeMillis() 值在选择器运行时不会更新。

在这里,您将在初始化选择器时修复“当前”时间戳。您应该为您的查询执行类似“endValidityDate <= (JMSTimestamp-24 60 1000)”的查询(与任何使用固定值而不是动态值的 SQL 查询相同的问题)。


查看完整回答
反对 回复 2022-07-20
?
森栏

TA贡献1810条经验 获得超5个赞

我不能专门谈论 IBM MQ 实现,但从 JMS 的角度来看,JMS 规范中没有任何内容限制选择器的使用,receiveNoWait因此我希望它可以在任何兼容的实现中工作。



查看完整回答
反对 回复 2022-07-20
?
杨魅力

TA贡献1811条经验 获得超5个赞

receive()、receive(long timeout) 和 receiveNoWait() 在交付内容方面应该完全相同。事实上,有几个实现是通过调用另一种方法来实现的。



查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信