Прерывистая доставка сообщений через веб-сокет

Я использую веб-сокет Spring 4 с RabbitMQ и STOMP. Мой брокер xml:

<websocket:message-broker application-destination-prefix="/app">
    <websocket:stomp-endpoint path="/ws">
      <websocket:sockjs/>
    </websocket:stomp-endpoint>
     <websocket:stomp-broker-relay prefix="/topic"
           relay-host="${websocket.relay.host}" relay-port="61613" client-login="XXXX" client-passcode="XXXX" system-login="XXXX" system-passcode="XXXX"
           heartbeat-send-interval="20000" heartbeat-receive-interval="20000"/>
     <!-- <websocket:simple-broker prefix="/topic"/> -->

     <websocket:client-inbound-channel>
<websocket:executor core-pool-size="50" max-pool-size="100" queue-capacity="100" keep-alive-seconds="60"/>
</websocket:client-inbound-channel>
<websocket:client-outbound-channel>
<websocket:executor core-pool-size="50" max-pool-size="100" queue-capacity="100" keep-alive-seconds="60"/>
</websocket:client-outbound-channel>
<websocket:broker-channel>
<websocket:executor core-pool-size="50" max-pool-size="100" queue-capacity="100" keep-alive-seconds="60"/>
</websocket:broker-channel>

  </websocket:message-broker>

Сообщения периодически теряются на клиенте. Я использовал SimpMessagingTemplate для пересылки сообщения брокеру.

Я также настроил размер текста как:

<beans:bean class="org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean ">
        <beans:property name="maxTextMessageBufferSize" value="8192000"/>
        <beans:property name="maxBinaryMessageBufferSize" value="8192000"/>
    </beans:bean>

Я не могу понять, теряются ли сообщения от сервера к брокеру или от брокера к браузеру.

Любая помощь будет оценена.


person Vineet Kasat    schedule 18.11.2014    source источник
comment
Вы пытались отлаживать свое приложение?   -  person Maksym    schedule 18.11.2014
comment
На самом деле это PROD, поэтому я не могу поставить его на удаленную отладку, но есть журналы, которые предполагают, что приложение пыталось отправить результаты, используя шаблон simmessaging.   -  person Vineet Kasat    schedule 18.11.2014
comment
@Vineet Я пытаюсь использовать RabbitMQ на своем локальном хосте, но у меня с этим проблемы, не могли бы вы дать мне какие-либо указания по этому поводу?   -  person Pankaj Nimgade    schedule 18.11.2014
comment
@PankajNimgade Конечно. Пожалуйста, поделитесь своей проблемой   -  person Vineet Kasat    schedule 19.11.2014
comment
@Vineet Спасибо за ваш ответ, я получил этот код, работающий в Android, кстати, не могли бы вы сказать мне, как я могу запустить код Java на сервере   -  person Pankaj Nimgade    schedule 19.11.2014
comment
@PankajNimgade, вы можете запустить код Java, создав исполняемый файл jar, или вы можете создать войну и развернуть ее в контейнере, таком как Tomcat.   -  person Vineet Kasat    schedule 21.11.2014
comment
@VineetKasat, я только что сделал это. Я запускаю файл jar на своем локальном хосте с factory.host(localhost), все работает нормально, но в моем коде Java я получаю 127.0.0.1 (порт 5672): ошибка подключения: ECONNREFUSED (отказ в соединении), и это происходит в моем код андроида   -  person Pankaj Nimgade    schedule 21.11.2014


Ответы (1)


Если ваш размер сообщения клиента или сервера использует стандартные 8 КБ (8192 байта), вы можете увеличить размер, выполнив следующие действия:

Клиент Java SockJS Spring и размер сообщения Клиент Java SockJS Spring и размер сообщения

person atom88    schedule 27.04.2018