gpt4 book ai didi

apache-camel - 用于基于 TCP 的流媒体的 Apache Camel

转载 作者:行者123 更新时间:2023-12-04 04:58:15 25 4
gpt4 key购买 nike

需要有一个基于 Camel (Mina/Netty) 的 TCP 服务器在特定端口上运行,允许多个 TCP 客户端连接到它。要流式传输的内容在文件中可用,TCP 服务器必须将文本文件中的每一行发送到连接的客户端之一(循环法)。

有人可以帮我勾勒出实现这一目标的 Camel 路线吗?

还可以限制流式传输速度,例如每个连接的客户端 100 条消息/秒?

提前致谢。

马可

最佳答案

我曾经做过这样的事情。嗯,不完全是你想要的,但我可以就如何开始提出一些建议。

让我们为这条路线使用 MINA 组件,因为我在使用 Netty 组件时遇到了一些问题,请参阅此链接 Exception thrown from Apache Camel Netty Consumer When more than one client sends data .显然这已得到修复,但由于我的项目被取消,我再也没有测试过它。

因此根据您的描述,这将是一个基于文本行的协议(protocol),在 DSL 中的简单路由看起来像这样

<route>
<from uri="mina2:tcp://localhost:5555?textline=true"/>
<to uri="bean:fileProcessing"/>
</route>

此路由将在端口 5555 上的本地主机上打开一个监听套接字。该路由还设置为使用文本行编解码器。文本行编解码器本质上是一行文本终止的行尾字符,即 \n。如果您要使用其他一些协议(protocol),则需要查看以下项目:

  • ProtocolEncoder——ProtocolEncoder 处理接受输入的任务有效负载并将字节放入 TCP channel 。
  • ProtocolDecoder——ProtocolDecoder 解释自定义将二进制协议(protocol)消息发送到您的应用程序可以理解的内容。
  • ProtocolCodecFactory——创建编码器和解码器。

您可以在 fileProcessing bean 中实现一些逻辑来发回回复。有一个问题,但是当客户准备好换一条新线路时,他们必须提出请求。据我了解,这遵循请求回复方案。然而,据我所见,该路由仅在有消息从客户端传入服务器时才处于事件状态。

可能有一种方法可以从服务器发起发送,但您需要自己尝试才能完成,我自己还没有做过类似的事情。

批判性阅读如下。

我的建议是从这样的基本路线开始,然后扩展您的逻辑,然后再返回您可能遇到的问题。

更新:

所以我对此做了一些研究,如果不遵循以下 InOnly 和 InOut 模式之一,似乎不可能将事件从服务器发送到客户端。

然后尝试只使用 MINA 或 Netty。

关于apache-camel - 用于基于 TCP 的流媒体的 Apache Camel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com