0

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

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

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

队列中的消息具有以下属性/值对作为其属性之一,因为我可以在队列中的 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");
}
4

1 回答 1

0

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

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

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

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

于 2021-03-22T20:36:53.763 回答