连接到TCP并使用JMS主题

时间:2015-04-03 16:49:53

标签: java spring jms netty spring-integration

  • 我有一个JMS主题。数据不断写入此主题。
  • 我想公开一个tcp监听端口,当连接时,它会显示数据流。
  • 数据是该主题的最新内容
基本上,我想做一个" tail -f"在使用tcp端口的jms主题上。因此,而不是" tail -f",它更像是" telnet server1 40000"查看主题的内容。

目前我正在考虑使用netty.io,但不确定spring-integration是否可以处理它。

有人甚至做过这样的事吗?

使用消息监听器会很棒,除了,我只想在建立tcp连接时使用该主题。

  • 服务器启动。
  • 没有从主题中读到的内容
  • 客户端#1连接到tcp端口40000,主题字符串内容正被写入套接字
  • client#2连接到tcp端口40000,主题字符串内容正被写入套接字
  • 客户#1和客户#2都获得相同的数据
  • 目前该主题有2位消费者
  • 客户端#2断开连接
  • 该主题的消费者数量已恢复为1
  • 客户端#1仍然获得流式传输数据

感谢。

1 个答案:

答案 0 :(得分:0)

通过向JMS主题打开使用者并将消息流式传输到连接,设置响应TcpConnectionOpenEvent的服务非常容易。

您需要入站和出站TCP适配器。

当入站适配器检测到新连接时,它会发出该事件。使用ApplicationListener(甚至是入站适配器)来捕获事件,捕获连接ID,打开主题上的使用者并开始向出站适配器发送消息(设置ip_connectionId以便适配器知道哪里路由消息)。

当客户端关闭连接时,您将获得连接关闭事件;停止主题消费者并取消注册。