Apache MQ - JMS 消息选择器

Apache MQ - JMS message selector

我需要一些帮助来获取特定 queue 的所有消息,其中包含特定的 属性。

这里的问题是我需要匹配 JMS header 属性 processprocessName.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
  • 让程序将消息规范化大小写放在首位

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