在camel websocket连接/断开连接上与ActiveMQ主题连接/断开连接

时间:2016-04-27 10:39:59

标签: websocket apache-camel activemq

我有以下的camel路由,它侦听ActiveMQ主题上的消息并立即将它们发送到所有连接的Web套接字客户端。这工作正常,但是一旦路由构建器初始化,就会与主题建立连接。

from("activemq:topic:mytopic").routeId("routeid").to("websocket://test?sendToAll=true");

我需要的是只在一个或多个客户端连接到Web套接字时才连接到主题。一旦没有更多的连接,我想停止听取主题。这可能吗?

1 个答案:

答案 0 :(得分:1)

据我所知,没有正确的方法可以做到这一点。实现这一目标的唯一方法是覆盖Jetty WebSocket代码。一旦覆盖Jetty Websocket代码,您就可以灵活地在打开和关闭websocket中编写自己的自定义代码。

  • 维护打开websocket中所有websocket客户端的列表。检查关闭websocket并将其从列表中删除以了解已连接或断开连接的数量。或者打开和关闭websocket上的计数器。
  • 一旦所有websocket客户端关闭,就会暂停路由,以便您的消息保留在主题或队列中。
  • 如果任何客户端连接到websocket,请恢复路由,以便消息到达连接的特定客户端。
相关问题