Как установить тайм-аут ответа на сокет с пружинной интеграцией? - PullRequest
0 голосов
/ 15 октября 2018

Я создаю сервер сокетов 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;
    }

1 Ответ

0 голосов
/ 15 октября 2018

Нет способа сделать это.

На стороне клиента вы можете установить тайм-аут сокета, чтобы клиент получал исключение, если в течение этого времени не получен ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...