我有一个JMS主题。数据一直在写入该主题。
我想公开一个tcp侦听端口,该端口在连接时会显示数据流。
数据是该主题的最新内容
基本上,我想使用tcp端口在jms主题上执行“ tail -f”。因此,查看主题内容更像“ telnet server1 40000”,而不是“ tail -f”。
目前,我正在考虑使用netty.io,但不确定spring-integration是否可以处理它。
有人做过这样的事情吗?
使用消息监听器会很好,除了,我只想在建立TCP连接时使用该主题。
服务器启动。
该主题没有任何内容
客户端#1连接到TCP端口40000,正在将主题字符串内容写入套接字
客户端#2连接到TCP端口40000,正在将主题字符串内容写入套接字
客户端#1和客户端#2都获得相同的数据
目前有2位该主题的消费者
客户端#2断开连接
该主题的消费者数量回到1
客户端#1仍获取数据流
谢谢。
最佳答案
通过打开JMS主题的使用者并将消息流式传输到连接,设置响应TcpConnectionOpenEvent
的服务非常容易。
您需要入站和出站TCP适配器。
当入站适配器检测到新连接时,它将发出事件。使用ApplicationListener
(或什至入站适配器)捕获事件,捕获连接ID,在主题上打开使用者并开始将消息发送到出站适配器(设置ip_connectionId
,以便适配器知道将消息路由到何处)。
当客户端关闭连接时,您将收到一个连接关闭事件。停止主题使用者并取消注册。