я столкнулся следующее сообщение об ошибке при использовании пружинного WebSockets:Блокировка сообщений в ожидании 10000 для BLOCKING..using весной WebSockets
Используйте случай: на нашей стороне сервера кода у нас есть fucntionality для поиска значений в base..if данных значения отсутствуют в базе данных .. он попадет в сервлет и получит данные. Вторая часть, т. е. попадание сервлета и получение данных - это асинхронный вызов.
Таким образом, для одного запроса есть несколько вещей, которые мы должны искать в базе данных ..
Пример: В запросе мы получили некоторый параметр канала: 1 Этот канал отображается на несколько идентификаторов говорят 1 отображается к 1,2,3,4,5
в WebSocket когда приходит запрос на сервер я извлеку канал и получить все идентификаторы сопоставляются и запустить цикл по идентификаторам следующим образом:
for(int i=0;i<ids.length;i++)
{
SomeObject databaseRespObj=callToDatabase(i); //SomeObject contains two fields value exists and string values
if(!databaseRespObj.valuesExists)
{
AsynchronouscallToServelt(i);
//once response received it will send message immediately using session
}
}
While выполнение вышеуказанного кода на стороне сервера, некоторые раз только я столкнулся с приведенной ниже ошибкой.
java.lang.IllegalStateException: Blocking message pending 10000 for BLOCKING
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.lockMsg(WebSocketRemoteEndpoint.java:130) ~[websocket-common-9.3.8.v20160314.jar:9.3.8.v20160314]
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendString(WebSocketRemoteEndpoint.java:379) ~[websocket-common-9.3.8.v20160314.jar:9.3.8.v20160314]
at org.springframework.web.socket.adapter.jetty.JettyWebSocketSession.sendTextMessage(JettyWebSocketSession.java:188) ~[spring-websocket-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.web.socket.adapter.AbstractWebSocketSession.sendMessage(AbstractWebSocketSession.java:105) ~[spring-websocket-4.2.4.RELEASE.jar:4.2.4.RELEASE]
К сожалению, если выше постановка вопроса не clear.Will пружина поддержка отправки асинхронных сообщений как обычный javax WebSocket делает Session.getAsyncRemote(). SendText (String текст)
Что такое конфигурация сделал весной для отправки асинхронных сообщений с помощью WebSocket сессии
Нам нужна respon чтобы время было быстрым, так как будет 2000 запросов в секунду ... так что не выполняются синхронные вызовы с сервисом. Так что мы не можем делать синхронные вызовы. –
Можем ли мы получить удаленную конечную точку из объекта WebsocketSession? –
@ niilzone .. Я разместил еще один вопрос с полными деталями. Http: //stackoverflow.com/questions/36318483/extracting-remote-endpoint-object-from-spring-websocket-session..Как код уже (жить в prod), и мы не используем push/socket js любую другую альтернативу? с изменением конфигурации mininmal/извлечением удаленной конечной точки? –