2013-01-08 95 views
1

我有2個應用程序(客戶端和服務器)使用請求 - 應答模式。使用特殊字符時JMS編碼的消息選擇器不匹配

客戶端向服務器發送一個請求消息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工程。

回答

1

您的JMS選擇器選擇器是HTML編碼的,它不會與底層系統一起工作(因爲它永遠不會匹配消息)。表達式JMSCorrelationID ='ID = Hostname-52991-1357677886768-3:1:2:1:1'應該按原樣工作。

+0

奇怪......我今天又試了一遍,它確實沒有編碼。我最初得到'InvalidSelectorException'與嵌套的'TokenMgrError's,帶有一些消息,例如第1行第一列的詞彙錯誤。遇到:'after:'。所以這對我來說是一個簡單的50分。 ;-) – siebz0r