【问题标题】:Referencing activemq with STOMP使用 STOMP 引用 activemq
【发布时间】:2014-09-01 00:13:54
【问题描述】:

我正在使用 Stomp 消息传递并在我的客户端/浏览器代码中订阅了一个主题:

stompClient.subscribe('/topic/informer', function(greeting){
                showGreeting(JSON.parse(greeting.body).content);
});

我正在使用向 activemq 主题发送消息的骆驼路由:

我都试过了:

<to uri="activemq:topic:informer"/>

和:

<to uri="stomp:topic:informer"/>

两者都只是在 activemq 中创建一个主题并将消息排入队列。他们永远不会接触到客户。对我来说,这意味着客户端中的 /topic/informer 与我可以在 activemq 控制台中看到的 topic:informer 是分开的。有谁知道如何通过订阅 activemq 主题或通过更改骆驼路由发送到订阅引用的主题来链接它们?

非常感谢您提供任何提示/建议!

【问题讨论】:

  • 可以分享完整的骆驼路线配置吗?您是否提供了正确的代理 URI?
  • 对上述问题有帮助吗?

标签: websocket apache-camel activemq stomp


【解决方案1】:

您的 STOMP 客户端在发送消息之前是否已连接并订阅?主题不是队列,如果在发送时没有客户端订阅,它们不会保留已发送的消息。如果您的客户端在发送消息后进行连接,那么除非它使用之前创建的持久主题订阅,否则它将不会收到任何内容。

【讨论】:

  • 在发送消息之前客户端肯定是连接和订阅的,但是camel上下文是在客户端连接或订阅之前创建的。这会导致任何问题吗?
  • 客户端连接并订阅onload,直到浏览器加载完毕并向服务器发送消息后才会向客户端发送消息。
【解决方案2】:

除了@Tim 提出的问题,我几乎没有其他问题。

  1. 您在客户端/浏览器代码中使用了哪个 STOMP 客户端库?您指定主题的方式有时会根据您使用的客户端库而变化。请检查客户文档。

  2. 从代理日志中,您能否看到订阅者正在订阅哪个主题?

  3. 如果你能看到 ActiveMQ 控制台,你能看到是否还有其他主题是用“informer”这个词创建的?如果是这样,您可以轻松找出问题所在。

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2012-03-20
    • 2014-04-19
    • 2019-10-28
    • 1970-01-01
    • 2012-11-03
    • 2015-07-02
    • 2016-09-06
    相关资源
    最近更新 更多