【问题标题】:JMS encoded message selector not matching when using special characters使用特殊字符时 JMS 编码的消息选择器不匹配
【发布时间】:2013-01-11 20:09:26
【问题描述】:

我有 2 个使用请求-回复模式的应用程序(客户端和服务器)。

客户端向服务器发送一个请求,消息 ID 设置为:ID=Hostname-52991-1357677886768-3:1:2:1:1

现在客户端必须收听相关 ID 设置为相同值的消息。由于该值包含特殊字符 (:),因此我必须对该值进行编码(使用 UTF-8)。

设置 JMS 选择器,这是一个 SQL 92 谓词,用于过滤代理中的消息。您可能需要将特殊字符(如 =)编码为 %3D

所以我猜选择器应该看起来像JMSCorrelationID='ID=Hostname-52991-1357677886768-3:1:2:1:1',编码后的选择器应该看起来像JMSCorrelationID='ID%3AHostname-52991-1357677886768-3%3A1%3A2%3A1%3A1'

我已经挣扎了几个小时,搜索并阅读了我能找到的所有内容,但我无法让这个东西工作,它让我发疯。

仅使用 ASCII 字符,如 abcd 有效。

【问题讨论】:

    标签: jms activemq correlation spring-jms jmstemplate


    【解决方案1】:

    您的 JMS 选择器选择器是 HTML 编码的,这将无法与底层系统一起使用(因为它永远不会匹配消息)。表达式 JMSCorrelationID='ID=Hostname-52991-1357677886768-3:1:2:1:1' 应该按原样工作。

    【讨论】:

    • 奇怪...我今天又试了一次,它确实有效,确实没有编码。我最初得到InvalidSelectorExceptions 和嵌套的TokenMgrErrors 以及一些类似Lexical error at line 1, column ?. Encountered: ' after : 的消息。所以我想这对你来说很容易 50。 ;-)
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多