使用特殊字符时,JMS编码的消息选择器不匹配

时间:2013-01-08 21:37:35

标签: jms activemq correlation spring-jms jmstemplate

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

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

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

  

设置JMS选择器,它是一个SQL 92谓词,用于过滤代理中的消息。您可能必须编码特殊字符,例如= as%3D

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

我现在已经挣扎了几个小时,搜索并阅读了我能找到的所有内容,但我无法让这件事情发挥作用,这让我疯狂。

仅使用abcd之类的ASCII字符。

1 个答案:

答案 0 :(得分:1)

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