Ошибочный javax.jms.JMSException: Одноранговый удален - PullRequest
5 голосов
/ 21 мая 2011

У меня странная проблема с Java JMS. Для моментов работает нормально, но выдает следующее исключение ошибочно и обрезает выполнение.

Важно отметить, что это происходит без остановки брокера.

javax.jms.JMSException: Peer (vm://test#1) disposed.
        at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
        at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1773)
        at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1790)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:114)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:203)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://test#1) disposed.

Ответы [ 2 ]

3 голосов
/ 21 мая 2011

Я думаю, что может быть эта проблема с ActiveMQ: https://issues.apache.org/jira/browse/AMQ-2902

Этот поток отслеживания ошибок говорит, что он безвреден (это просто шумное сообщение журнала уровня INFO), ичто это исправлено в ActiveMQ 5.4.2.

С другой стороны, вы говорите, что исключение «обрезает выполнение» ... которое может означать, чтоэта проблема отличается от вашей ...

ОБНОВЛЕНИЕ

Любой, кто получает исключение "равноправного расположения", не устраняется при обновлении ActiveMQ и не являетсясвязанных с выключением (см. Невозможно завершить работу встроенной службы activeMQ с использованием встроенного вызова BrokerService.stop ), следует рассмотреть возможность отправки отчета об ошибке.

2 голосов
/ 03 января 2014

Казалось бы, проблема автора совершенно иная.Ссылка упоминает шумное сообщение журнала уровня INFO, но выше (что также я и получаю) является брошенным JMSException, в котором есть эти дополнительные строки из предложения Caused by:.

    at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:88)
    at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
    at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
    at org.apache.activemq.ActiveMQConnection.doAsyncSendPacket(ActiveMQConnection.java:1275)
    ... 31 more

Странно то, что есть проверка connection.isClosed (), прежде чем он зайдет так далеко.Таким образом, соединение открыто, но «пэр» все еще находится.Из поиска других потенциальных ответов в Интернете единственно возможным решением является то, что соединение с брокером не повреждено, но конкретная очередь может быть закрыта.

Для моего конкретного подобного случая это произошло, когда брокер был остановлен, нопотребители и производители все еще пытались установить связи.Иногда соединение по-прежнему считается открытым (т. Е. не закрыто , даже если брокер был остановлен).Исправление этого, чтобы гарантировать, что брокер не умер, исправило мою проблему.

Я также хотел добавить, что эту проблему я видел в ActiveMQ 5.6 (но я не тестировал в 5.8).

...