Apache MQ - JMS 消息选择器
Apache MQ - JMS message selector
我需要一些帮助来获取特定 queue 的所有消息,其中包含特定的 属性。
这里的问题是我需要匹配 JMS header 属性 process 与 processName.As消息的进程值可以是大写或小写,但 processName 的值始终是大写。
我可以不在这里使用equalsIgnorecase,例如:
StringJMSCriteriaBuilder("process").equalIgnorecase(processName);
因为IJMSSelectorCriteriaBuilder接口中没有这个方法
下面是我目前的代码:
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 select 或区分大小写。
Two strings are equal if and only if they contain the same sequence of characters.
我见过的解决方案包括:
- 预处理所有消息以标准化大小写
- 使用消息代理
- 在代码中浏览、评估和select
- 让程序将消息规范化大小写放在首位
抱歉,没有不涉及解析每条消息的好的接收方解决方案。
我需要一些帮助来获取特定 queue 的所有消息,其中包含特定的 属性。
这里的问题是我需要匹配 JMS header 属性 process 与 processName.As消息的进程值可以是大写或小写,但 processName 的值始终是大写。
我可以不在这里使用equalsIgnorecase,例如: StringJMSCriteriaBuilder("process").equalIgnorecase(processName);
因为IJMSSelectorCriteriaBuilder接口中没有这个方法
下面是我目前的代码:
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 select 或区分大小写。
Two strings are equal if and only if they contain the same sequence of characters.
我见过的解决方案包括:
- 预处理所有消息以标准化大小写
- 使用消息代理
- 在代码中浏览、评估和select
- 让程序将消息规范化大小写放在首位
抱歉,没有不涉及解析每条消息的好的接收方解决方案。