Я создаю сервер сокетов nio
следующим образом.
Как определить тайм-аут, который автоматически отправит клиенту ответ об ошибке, если он превышен?
@MessageEndpoint
public class SocketEndpoint {
@ServiceActivator(inputChannel = "serverChannel", sendTimeout = "5000")
public String handleMessage(String message) {
TimeUnit.SECONDS.sleep(60);
//...TODO how to send some kind of "timeout exceeded" response?
}
}
@Bean
public TcpConnectionFactoryFactoryBean factory() {
TcpConnectionFactoryFactoryBean f = new TcpConnectionFactoryFactoryBean();
f.setType("server");
f.setPort(port);
f.setUsingNio(true);
f.setSingleUse(false);
f.setDeserializer(deserializer);
f.setSerializer(serializer);
return f;
}
@Bean
public TcpInboundGateway server(
TcpConnectionFactoryFactoryBean factory,
MessageChannel serverChannel) throws Exception {
TcpInboundGateway g = new TcpInboundGateway();
g.setConnectionFactory(factory.getObject());
g.setRequestChannel(serverChannel);
return g;
}