spring-boot - 弹簧集成大连接处理
问题描述
我们已经使用 spring 集成实现了 tcp 服务器。
配置为
@Bean
TcpNetServerConnectionFactory cf(){
TcpNetServerConnectionFactory connectionFactory=new TcpNetServerConnectionFactory(TCP_PORT);
connectionFactory.setSerializer(new CustomSerializerDeserializer());
connectionFactory.setDeserializer(new CustomSerializerDeserializer());
connectionFactory.setSoTimeout(TIMEOUT);
return connectionFactory;
}
@Bean
TcpInboundGateway tcpGate(){
TcpInboundGateway gateway=new TcpInboundGateway();
gateway.setConnectionFactory(cf());
gateway.setRequestChannel(requestChannel());
return gateway;
}
@Bean
public MessageChannel requestChannel(){
return new DirectChannel();
}
和服务激活器
@MessageEndpoint
public class Echo {
@ServiceActivator(inputChannel="requestChannel")
public byte[] echo(byte[] in,@SuppressWarnings("deprecation") @Header("ip_address") String ip){
return "OK".getBytes();
}
}
我们有 150 + 与分配端口的连接,并且每 10 秒有 150 + tcp 数据包。
目前我们正在处理延迟数据包接收问题,我们需要实时数据来运行。
最近我们得出结论,线程正在等待执行,这导致数据包的接收延迟。
我们如何使用 spring 集成和 tcp inboudgateways 处理此类问题。
解决方案
TcpNetServerConnectionFactory
是AbstractConnectionFactory
定义java.util.concurrent.Executor
属性 ( taskExecutor
)的子类。
推荐阅读
- haskell - Rigid / skolem 类型变量:作为参数很好,但使用本地 where/let 语句转义范围
- mysql - Liquibase:如何更新变更日志?
- python - 如何将原始代码转换为函数示例
- c# - CEFSharp 应用程序显示空白屏幕,然后在一分钟后自行响应
- android - android protobuf javalite 和 R8
- android - Android Studio 问题——无法在项目文件中添加新的activity或fragment
- sap-fiori - 从 Fiori Launchpad 调用基于主菜单的风味时出现问题
- laravel-mix - Laravel mix 从图像路径中删除子文件夹
- php - 使用 SortableJS 保存我的订单的位置或状态
- java - 如何使用tomcat返回文件并开始下载?