gpt4 book ai didi

java - 如何在 spring 中正确关闭 tcp 套接字连接?

转载 作者:行者123 更新时间:2023-11-29 08:52:04 25 4
gpt4 key购买 nike

我正在使用 Spring 集成 来管理服务器端的套接字连接。如果服务器 (tomcat) 关闭,我如何确保任何 Activity 套接字连接正确终止?

<ip:tcp-inbound-gateway id="server"
connection-factory="fac"
request-channel="chan"
error-channel="errorChan" />

有好心的听众吗?或者任何可以防止服务器关闭的拦截器,例如如果关机期间有任何打开的套接字,则最多 60 秒;但同时关闭套接字以在关机期间不接受任何连接?

最佳答案

使用 Listener 解决了这个问题,并在有任何飞行消息(actives 见下文)时关闭具有特定超时的 socket gate。

@Component
public class MyListener implements ApplicationListener<ContextClosedEvent> {

@Autowired
private TcpInboundGateway gate;

@Autowired
private IntegrationMBeanExporter bean;

@Override
public void onApplicationEvent(ContextClosedEvent e) {
//return
int actives = gate.beforeShutdown();

if (actives == 0) {
bean.stopActiveComponents(true, 0);
} else {
bean.stopActiveComponents(false, timeout);
}
}
}

关于java - 如何在 spring 中正确关闭 tcp 套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304873/

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