【问题标题】:Apache MQ - JMS message selectorApache MQ - JMS 消息选择器
【发布时间】:2015-11-05 07:15:05
【问题描述】:

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

这里的问题是我需要将 JMS 标头属性 processprocessName 匹配。因为消息的 process 值可以是大写或小写,但 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;
        }

【问题讨论】:

    标签: java jms message-queue ibm-mq spring-jms


    【解决方案1】:

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

    两个字符串相等当且仅当它们包含相同的字符序列。

    我见过的解决方案包括:

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 2011-01-20
      • 1970-01-01
      • 2015-06-16
      • 2016-01-11
      • 1970-01-01
      • 2017-04-04
      • 2012-02-03
      • 2013-08-09
      相关资源
      最近更新 更多