java - 带有 receiveNoWait() 的消息选择器
问题描述
消息选择器是否也可以与 receiveNowait() 方法一起用于同步过程。它适用于receive() 方法,但想知道IBM mq 的receiveNoWait。创建消费者时添加消息选择器。
编辑 1:我已经使用 receiveNowait() 方法进行了测试,并且选择器不起作用。我不知道问题出在我的选择器或 receivenowait 方法上。以下是我使用的选择器:
String messageSelector = "JMSTimestamp <= " + System.currentTimeMillis() - 180000;
receiver = (MessageConsumer) session.createConsumer(replyQueue, messageSelector);
这意味着,接收者只能接收比当前时间早 3 分钟的消息。谁能弄清楚是什么问题。
编辑2:完成测试后,我发现问题出在选择器上,JMSTimeStamp 在选择器表达式中的正确用法是什么?
解决方案
pepared system.currnetTimeMillis() 值在选择器运行时不会更新。
在这里,您将在初始化选择器时修复“当前”时间戳。您应该为您的查询执行类似“endValidityDate <= (JMSTimestamp-24 60 1000)”的查询(与使用固定值而不是动态值的任何 SQL 查询相同的问题)。
推荐阅读
- c - 解释具体的 C#define 是如何工作的
- mysql - 看到这个错误我很困惑:关键字'WHERE'mysql附近的语法不正确
- wpf - ContentPresenter.ContentTemplate 是否支持 HierarchicalDataTemplate(WPF)?
- php - phpmyadmin 未打开并显示“页面无法正常工作 HTTP 错误 500”
- mongodb - 使用 fastapi_contrib 与 mongodb 配合使用的 Python FAST API 框架
- sql-server - 休假系统的日期重叠案例
- php - 如何使用 fpdf 在我的输出文件中附加邮件
- kubernetes - Kubernetes 亲和力和反亲和力
- html - 您是否有任何功能或工具可以将简单的 html 转换为我喜欢的特殊代码?
- android-studio - android studio中未使用的导入