gpt4 book ai didi

ruby - ActiveMQ 在通过 STOMP 发送时将消息存储在 Base64 中?

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:58 25 4
gpt4 key购买 nike

我正在使用 ruby​​ stomp gem 向 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>

最佳答案

我已经解决了我自己的问题 - 以下是问题发生原因的分割。

ActiveMQ 假定任何带有 content-length header 的传入 STOMP 消息都是 ByteMessage,而没有该 header 的任何传入 STOMP 消息都是 TextMessage (reference material)。

鲁比的 stomp gem试图考虑到这一点,但他们实现的 header 编码方法破坏了他们自己对自定义 header 的测试::suppress_content_length,它按照锡 jar 上的说明进行操作。

我已经 fork 并修改了他们的代码来解决这个问题 - 请参阅 my stomp repo - 希望他们能尽快收手。

关于ruby - ActiveMQ 在通过 STOMP 发送时将消息存储在 Base64 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com