【问题标题】:ActiveMQ to Apollo transition, Openwire to Stomp protocol configurationActiveMQ 到 Apollo 的过渡,Openwire 到 Stomp 协议配置
【发布时间】:2012-11-04 06:43:35
【问题描述】:

我正在尝试从 ActiveMQ 5.6 切换到 Apollo 1.5。 我有两个软件正在交换消息,使用发布/订阅主题。

  • 第一个是c++,使用openwire和tcp
  • 第二个是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 连接器中使用 ,它应该自动检测客户端协议,但也不起作用。

有人可以帮我解决这个问题吗?

谢谢,


编辑:

我发现我确实收到了 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 u_23u_75"

阿波罗

“信息 订阅:sub-0 目的地: 内容长度:331 内容类型:协议/openwire 消息 ID:xps-broker-291 Eç{#ID:myID-61463-1352999939140-0:0emy-topicn{#ID:myID-61463-1352999939140-0:0; Å??u_23u_75(Message.PointToPoint 类 "

你认为这可能是 Apollo 的问题吗?

【问题讨论】:

    标签: activemq messagebroker apollo


    【解决方案1】:

    ActiveMQ 5.6 处理将逻辑 OpenWire 消息转换为 STOMP 客户端的文本表示。 Apollo,目前还不支持该功能! :( 见:

    https://issues.apache.org/jira/browse/APLO-267

    它只获取完整的 openwire 消息并将其用作 STOMP 消息的主体。顺便说一句,只要正确设置了内容长度标头,在 STOMP 消息中使用二进制数据是完全有效的。

    【讨论】:

    • 感谢您的回答。我昨天确实检查了jira,票不在那里,我不确定是否应该创建一个。谢谢你做到了。
    猜你喜欢
    • 2019-08-18
    • 2011-02-10
    • 2014-05-21
    • 2018-07-07
    • 2013-01-28
    • 2012-03-20
    • 2019-01-07
    • 2011-03-31
    • 2021-06-04
    相关资源
    最近更新 更多