需要有一个基于 Camel (Mina/Netty) 的 TCP 服务器在特定端口上运行,它允许多个 TCP 客户端连接到它。要流式传输的内容在文件中可用,并且 TCP 服务器必须将文本文件中的每一行发送到连接的客户端之一(循环)。
有人可以帮我勾勒出骆驼路线的轮廓来实现这一目标吗?
还可以限制流传输速度,例如每个连接的客户端 100 msg/sec?
提前致谢。
MK
需要有一个基于 Camel (Mina/Netty) 的 TCP 服务器在特定端口上运行,它允许多个 TCP 客户端连接到它。要流式传输的内容在文件中可用,并且 TCP 服务器必须将文本文件中的每一行发送到连接的客户端之一(循环)。
有人可以帮我勾勒出骆驼路线的轮廓来实现这一目标吗?
还可以限制流传输速度,例如每个连接的客户端 100 msg/sec?
提前致谢。
MK
我做过这样的事情。嗯,不完全是你想要的,但我可以就如何开始提出一些建议。
让我们为这条路线使用 MINA 组件,因为我对 Netty 组件有一些问题,请参阅此链接Exception throw from Apache Camel Netty Consumer When more than one client send data。显然,这已得到修复,但随着我的项目被取消,我再也没有测试过它。
所以根据你的描述,这将是一个基于文本行的协议,一个简单的路由在 DSL 中看起来像这样
<route>
<from uri="mina2:tcp://localhost:5555?textline=true"/>
<to uri="bean:fileProcessing"/>
</route>
此路由将在 localhost 端口 5555 上打开一个侦听套接字。该路由还设置为使用 textline 编解码器。文本行编解码器本质上是一行以行尾字符结尾的文本,即\n
. 如果您要使用其他协议,则需要查看以下项目:
您可以在 bean 中实现一些逻辑fileProcessing
来发送回复。有一个问题,但是当客户准备好获得新线路时,他们必须提出要求。据我了解,这遵循请求回复场景。但是,据我所见,该路由仅在有消息从客户端传入服务器时才处于活动状态。
可能有一种方法可以从服务器启动发送,但是您需要自己尝试一下才能完成它我自己没有做过类似的事情。
批判性阅读如下。
我的建议是从这样的基本路线开始,然后扩展您的逻辑,然后返回您可能遇到的问题。
更新:
因此,我对此进行了一些研究,如果不遵循以下 InOnly 和 InOut 模式之一,似乎不可能将事件从服务器发送到客户端。
然后尝试使用 MINA 或 Netty。