【问题标题】:How to set up the MessageSelector in activeMq如何在 activeMq 中设置 MessageSelector
【发布时间】:2021-03-23 04:36:53
【问题描述】:

我有一个进程在 ActiveMQ 中运行并轮询消息。 现在我在设置消息选择器时遇到问题。 Queue 已连接并从 Queue 中拉取消息,没有选择器。

如果我添加了一个选择器,它只会中断一个只包含选择器字符串的异常。

尽管我阅读了很薄的文档,但我并没有真正理解问题,我使用了屏蔽字符串并使用了格式,但没有运气。

队列中的消息具有以下属性/值对作为其属性之一,我可以在队列中的 web 面板中看到消息:

F_IMGKOMP.PIMG_SOURCE_FILENAME = EURDE_500.jpeg

简化后的代码如下所示:

var selector = "F_IMGKOMP.PIMG_SOURCE_FILENAME = 'EURDE_500.jpeg'";

using (IMessageConsumer myCons = mySession.CreateConsumer(myDest, selector ))
{
    var tmp = myCons.Receive(new TimeSpan(0, 0, 10));

    if (tmp != null)
        System.Diagnostics.Debug.WriteLine("eureka");
}

【问题讨论】:

    标签: c# apache-nms


    【解决方案1】:

    您的选择器字符串无效,这就是您收到有关选择器错误的原因。选择器语法是 SQL 92。

    标识符必须遵守以下规则:

    标识符是 Java 字母和 Java 的无限长度序列 数字,其中第一个必须是 Java 字母。一封信是任何 Character.isJavaLetter 方法为其返回 true 的字符。 这包括_和$。字母或数字是任何字符 Character.isJavaLetterOrDigit 方法返回 true。

    这意味着使用'.'在您的选择器属性标识符中是罪魁祸首。

    【讨论】:

      猜你喜欢
      • 2011-12-27
      • 2014-06-27
      • 2017-07-29
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 2015-07-23
      • 2012-10-23
      • 1970-01-01
      相关资源
      最近更新 更多