【问题标题】:Connecting to TCP and consuming JMS topic连接 TCP 并消费 JMS 主题
【发布时间】:2015-06-08 18:55:27
【问题描述】:
  • 我有一个 JMS 主题。不断向该主题写入数据。
  • 我想公开一个 tcp 侦听端口,该端口在连接时会显示数据流。
  • 数据是主题的最新内容

基本上,我想使用 tcp 端口对 jms 主题执行“tail -f”。所以不是“tail -f”,而是“telnet server1 40000”来查看主题内容。

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

有人做过这样的事吗?

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

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

谢谢。

【问题讨论】:

    标签: java spring jms netty spring-integration


    【解决方案1】:

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

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

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

    当客户端关闭连接时,你会得到一个连接关闭事件;停止主题消费者并取消注册。

    【讨论】:

    • 我和netty一起去
    • @TitiWangsabinDamhore 你能说一下Netty怎么做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2011-12-12
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2018-04-21
    相关资源
    最近更新 更多