Утешение - Как автоматически переподключиться, когда я получаю "Ошибка отправки сообщения - уже закрыто" - PullRequest
0 голосов
/ 25 февраля 2019

Моя система начала выдавать исключения из использования API утешения (sol-jms-10.1.1.jar).После перезапуска приложения проблема ушла.Я подозреваю, что MQ проходил техническое обслуживание в выходные дни, а затем что-то случилось с соединением.

Есть ли какие-либо настройки, которые я могу использовать для автоматического сброса разорванного соединения и повторного подключения, чтобы исправить проблему, вместо того, чтобы отказов приложения подэтот сценарий?

javax.jms.IllegalStateException: Error sending message - already closed (Tried to perform operation on a closed XML message producer)
    at sun.reflect.GeneratedConstructorAccessor677.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.solacesystems.jms.impl.JMSExceptionValue.newInstance(JMSExceptionValue.java:32)
    at com.solacesystems.jms.impl.JCSMPExceptionMapper$ArrayListMapper.get(JCSMPExceptionMapper.java:31)
    at com.solacesystems.jms.impl.JCSMPExceptionMapper.get(JCSMPExceptionMapper.java:94)
    at com.solacesystems.jms.impl.Validator.createJMSException(Validator.java:572)
    at com.solacesystems.jms.SolMessageProducer.sendMessage(SolMessageProducer.java:387)
    at com.solacesystems.jms.SolMessageProducer.send(SolMessageProducer.java:199)
...

Caused by: com.solacesystems.jcsmp.StaleSessionException: Tried to perform operation on a closed XML message producer
    at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.throwClosedException(JCSMPXMLMessageProducer.java:1434)
    at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.createBytesXMLMessage(JCSMPXMLMessageProducer.java:1864)
    at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.createXMLContentMessage(JCSMPXMLMessageProducer.java:1949)
    at com.solacesystems.jms.impl.FlowMessageProducerAdapter.createXMLContentMessage(FlowMessageProducerAdapter.java:85)
    at com.solacesystems.jms.encoding.DefaultJMSEncoder.encode(DefaultJMSEncoder.java:80)
    at com.solacesystems.jms.SolMessageProducer.sendMessage(SolMessageProducer.java:377)
    ... 27 more
Caused by: com.solacesystems.jcsmp.JCSMPTransportException: (JCSMPTransportException) Error receiving data from underlying connection.
    at com.solacesystems.jcsmp.protocol.impl.TcpClientChannel$ClientChannelReconnect.call(TcpClientChannel.java:2257)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more
Caused by: ((Client name: myurl   Local addr: ...  Remote addr: ...) - )  com.solacesystems.jcsmp.JCSMPErrorResponseException: 403: Replication Is Standby [Subcode:56]
    at com.solacesystems.jcsmp.protocol.impl.TcpChannel.executePostOnce(TcpChannel.java:228)
    at com.solacesystems.jcsmp.protocol.impl.ChannelOpStrategyClient.performOpen(ChannelOpStrategyClient.java:90)
    at com.solacesystems.jcsmp.protocol.impl.TcpClientChannel.performOpenSingle(TcpClientChannel.java:414)
    at com.solacesystems.jcsmp.protocol.impl.TcpClientChannel.access$800(TcpClientChannel.java:104)
    at com.solacesystems.jcsmp.protocol.impl.TcpClientChannel$ClientChannelReconnect.call(TcpClientChannel.java:2098)
    ... 4 more

1 Ответ

0 голосов
/ 26 февраля 2019

Solace API может автоматически переподключаться после разрыва соединения.Это поведение контролируется свойством «Reconnect Retries».

Подробности можно найти в разделе «Reconnect Retries» по адресу https://docs.solace.com/Solace-JMS-API/Managing-Sessions.htm#establishing_connections_577400906_329588

. Исключение: приложение достигло точки, в которой SolaceAPI прекратил попытки восстановить соединение.Теперь дело за приложением, чтобы восстановить соединение.

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