gpt4 book ai didi

java - Apache MQ - JMS 消息选择器

转载 作者:行者123 更新时间:2023-11-30 08:48:24 24 4
gpt4 key购买 nike

我需要一些帮助来获取具有特定属性的特定队列的所有消息。

这里的问题是我需要将 JMS header 属性 processprocessName 匹配。因为消息可以将 process 的值设置为大写或小写,但 processName 总是一个大写的值。

我可以在这里使用 equalsIgnorecase,例如:StringJMSCriteriaBuilder("process").equalIgnorecase(processName);

因为IJMSSelectorCriteriaBuilder接口(interface)中没有这个方法。

下面是我目前的代码:

private String createJMSSelectorMessage(QueueFilter queueFilter) throws Exception {
StringBuffer selectorMessage = new StringBuffer();
String processName=Service.getProcess(Long.valueOf(queueFilter.getProcess())).getProcessName();


IJMSSelectorCriteriaBuilder processNameSelectorCriteriaBuilder = new StringJMSCriteriaBuilder("process").eq(processName);
selectorMessage.append(processNameSelectorCriteriaBuilder.getJMSSelectorCriteriaValue());
return selectorMessage;
}

最佳答案

JMS 规范 stipulates选择器区分大小写。

Two strings are equal if and only if they contain the same sequence of characters.

我见过的解决方案包括:

  • 预处理所有消息以标准化大小写
  • 使用消息代理
  • 在代码中浏览、评估并选择
  • 让程序将消息规范化大小写放在首位

抱歉,没有不涉及解析每条消息的好的接收方解决方案。

关于java - Apache MQ - JMS 消息选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com