1

私はRubystompgemを使用してActiveMQにメッセージを送信しています。データはテキストとしてではなく、Base64でエンコードされた形式で保存されているため、XPathセレクターを使用する機能が混乱しています。

Jetty内で「送信」機能を使用すると、Base64でエンコードされていないテキストを同じキューに送信できることを確認しました。

これを防ぐ方法について何か提案はありますか?


私のテストコード:

require 'stomp'

stomp = { 
    :hosts => [{:host => 'localhost', :port => 61613}]
}

client = Stomp::Client.new(stomp)

queue = "/queue/test"
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<test>xml</test>"

client.publish(queue,xml,{
    :'content-type' => 'application/xml',
    :persistent     => true
})

次に、ActiveMQデモにアクセスして、実際に何が格納されているかを確認できます。

 http://127.0.0.1:8161/demo/queueBrowse/test?view=xml

出力:

<messages queue="queue://test">
    <!-- snip -->
        <content>
            <data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cjx0ZXN0PnhtbDwvdGVzdD4A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA=</data>
            <offset>0</offset>
            <length>56</length>
        </content>
    <!-- snip -->
</messages>
4

1 に答える 1

3

私は自分の問題を解決しました。これが発生した理由の内訳です。

ActiveMQ は、content-lengthヘッダー付きの受信 STOMP メッセージは ByteMessage であり、そのヘッダーのない受信 STOMP メッセージは TextMessage であると想定しています (参照資料)。

Ruby のstomp gemはこれを考慮に入れようとしますが、彼らが実装したヘッダー エンコーディング メソッドはカスタム ヘッダーの独自のテストを破ります:suppress_content_length

私はこれを修正するために彼らのコードをフォークして修正しました -私のストンプレポを見てください- 彼らがすぐに折り畳まれることを願っています.

于 2013-02-20T16:23:07.913 に答える