我正在尝试从 ActiveMQ 5.6 切换到 Apollo 1.5。我有两个软件正在交换消息,使用发布/订阅主题。
- 第一个是 c++ 并使用带有 tcp 的 openwire
- 第二个是 Javascript 并使用 stomp 和 websockets
使用 ActiveMQ 一切正常,我发送的消息可以在两个软件上读取和写入,此后我没有更改客户端。
现在,我从 c++ 软件(使用 openwire)发送消息,并尝试用 JS 软件读取它们,但我得到了错误。事实上,我收到带有标题内容类型的消息:“protocol/openwire”,但我期待 stomp。
这就是我配置 apollo.xml 连接器部分的方式:
<connector id="tcp" bind="tcp://0.0.0.0:61613">
<openwire max_inactivity_duration="-1" max_inactivity_duration_delay="-1" />
<stomp max_header_length="10000" die_delay="-1" />
</connector>
<connector id="ws" bind="tcp://0.0.0.0:61623">
<stomp max_header_length="10000" die_delay="-1" />
</connector>
我还尝试在 tcp 和 ws 连接器中使用 <detect />,它应该自动检测客户端协议,但也不起作用。
有人可以帮我解决这个问题吗?
谢谢,
编辑 :
我发现我确实收到了 stomp 协议消息,但它们的格式非常奇怪,甚至包含使 stomp.js 无法解析消息并正确填充消息正文的非文本字符。
这是从 activemq openwire 和 apollo openwire 收到的相同消息,使用相同的 c++ 发布者和 js 订阅者:
活跃的MQ
“信息 消息 ID:ID:myID-61443-1352999572576-0:0:0:0:0 类:Message.PointToPoint 目的地:/主题/我的主题 时间戳:1352999626186 过期:0 订阅:sub-0 优先级:4 <PointToPoint xmlns="Message" ><SourceId>u_23</SourceId><TargetId>u_75</TargetId></PointToPoint>"
阿波罗
“信息 订阅:sub-0 目的地: 内容长度:331 内容类型:协议/openwire 消息 ID:xps-broker-291 Eç{#ID:myID-61463-1352999939140-0:0emy-topicn{#ID:myID-61463-1352999939140-0:0; Å??<PointToPoint xmlns="Message" ><SourceId>u_23</SourceId><TargetId>u_75</TargetId></PointToPoint>(Message.PointToPoint 类 "
你认为这可能是阿波罗的问题吗?