gpt4 book ai didi

java - 如何使用 Spring-Integration 返回套接字超时错误消息

转载 作者:行者123 更新时间:2023-11-30 03:52:45 25 4
gpt4 key购买 nike

我正在使用 Spring(集成) 提供套接字 tcp 连接。我对该套接字设置了特定的超时。

当超过超时时,我不仅喜欢关闭连接(已经可以工作),而且还返回自定义错误消息(或者不关闭连接,而只是返回错误消息)。这可能吗?

@Bean
public TcpConnectionFactoryFactoryBean tcpFactory(Converter converter) {
TcpConnectionFactoryFactoryBean factory = new TcpConnectionFactoryFactoryBean();
factory.setType("server");
factory.setPort("8080");
factory.setSingleUse(true);
factory.setSoTimeout(10000); //10s; how to return error message?
return factory;
}
<小时/>

更新:

@Bean
public ApplicationListener<TcpConnectionEvent> tcpErrorListener() {
TcpConnectionEventListeningMessageProducer producer = new TcpConnectionEventListeningMessageProducer();
producer.setEventTypes(new Class[] {TcpConnectionCloseEvent.class});
producer.setOutputChannel(tcpErrorChannel()); //what to do here?
return producer;
}

最佳答案

实际上,任何关闭的连接都会发出TcpConnectionCloseEvent,您可以使用以下方法处理它:

<int-event:inbound-channel-adapter channel="connectionClosedChannel" 
event-types="org.springframework.integration.ip.tcp.connection.TcpConnectionCloseEvent"/>

您不仅可以关闭连接,还可以使用该事件流执行任何所需的逻辑。

更新

要从 JavaConfig 使用它:

@Bean
public SmartApplicationListener tcpErrorListener() {
ApplicationEventListeningMessageProducer producer = new ApplicationEventListeningMessageProducer();
producer.setEventTypes(TcpConnectionCloseEvent.class);
producer.setOutputChannel(tcpErrorChannel());
return producer;
}

@Bean
public MessageChannel tcpErrorChannel() {
return new DirectChannel();
}

关于java - 如何使用 Spring-Integration 返回套接字超时错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989625/

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