Нужна помощь с этим исключением из-за тайм-аута сокета, которое я продолжаю получать периодически в моем приложении при попытке прочитать сообщения из очередей AWS SQS.
Процесс:
Проблема:
Время от времени в моем приложении я получаю следующее исключение в запросах SQS receiveMessage:
com.amazonaws.http.AmazonHttpClient:executeHelper:492 - main - INFO :
Unable to execute HTTP request: Read timed out
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_121]
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_121]
at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_121]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_121]
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) ~[?:1.8.0_121]
at sun.security.ssl.InputRecord.read(InputRecord.java:503) ~[?:1.8.0_121]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) ~[?:1.8.0_121]
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930) ~[?:1.8.0_121]
Проверяя очередь SQS с консоли, я вижу, что во время сбоев сообщение считывается из очереди (сообщение отправляется в полет), но не получено в конце приложения. Это приводит к блокировке сообщения на время тайм-аута видимости (1 час) и, следовательно, к задержке обработки сообщения.
Дополнительные детали:
Приветствуется любая помощь в том, как решить или отладить эту проблему. Сообщите мне, если потребуется дополнительная информация.
привет @ Michael-sqlbot, спасибо за ответ. Приложение работает только в экземпляре EC2, поэтому я предполагаю, что сеть не должна быть большой проблемой. SDK, который мы используем, на самом деле немного устарел (октябрь 2015 г.), и мы наблюдаем эту проблему уже довольно давно.




Где работает этот код? В EC2? Внешний сервер? Внутри приложения на пользовательском устройстве? Мое первое впечатление таково, что это проблема, связанная с сетью, поэтому то, где на самом деле выполняется код, кажется актуальным. Я не знаком с этим конкретным SDK, поэтому возникает вопрос, является ли ваш код новым или старым, и возникла ли сама проблема с момента развертывания кода или это новая проблема с кодом, который исторически работал правильно.