Через некоторое время в очереди activemq нет новых потребителей

Уже через месяц у нас возникает повторяющаяся проблема с activemq и spring. Через некоторое время (от дня до недели) у нас больше нет потребителей, и новые не запускаются, и очередь начинает заполняться.

Эта установка работала более года, без каких-либо проблем, и, насколько мы видим, ничего существенного не изменилось.

Другая используемая нами очередь также начала показывать такое же поведение, но реже.

из веб-консоли activemq (так как вы видите много ожидающих сообщений и нет потребителей)

Name ↑ Number Of Pending Messages Number Of Consumers Messages Enqueued Messages Dequeued Views Operations
queue.readresult 19595 0 40747 76651 Browse Active Consumers 

содержимое нашего bundle-context.xml

<!-- JMS -->
<bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
    <property name="maxConnections" value="5" />
    <property name="maximumActive" value="5" />

    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL">
                <value>tcp://localhost:61616</value>
            </property>
        </bean>
    </property>
</bean>


<bean id="ResultMessageConverter" class="com.bla.ResultMessageConverter" />

<jms:listener-container connection-factory="jmsConnectionFactory" destination-resolver="jmsDestinationResolver"
    concurrency="2" prefetch="10" acknowledge="auto" cache="none" message-converter="ResultMessageConverter">
    <jms:listener destination="queue.readresult" ref="ReaderRequestManager" method="handleReaderResult" />
</jms:listener-container>

Ни в одном журнале нет исключений. Кто-нибудь знает причину, по которой через некоторое время новые потребители не могут быть запущены.

Спасибо


person user1616345    schedule 22.08.2012    source источник
comment
Привет. Вы что-нибудь нашли по этому поводу?   -  person Perimosh    schedule 01.02.2017


Ответы (2)


Раньше я сталкивался с проблемами, когда «потребители перестают потреблять», но не видел, чтобы потребители перестали существовать. Возможно, у вас не хватает памяти и / или соединений в пуле. Вам нужно перезапустить ActiveMQ, чтобы решить проблему, или только ваше приложение?

Вот пара предложений:

  1. Установите предварительную выборку очереди на 0
  2. Добавьте "useKeepAlive = false" в строку подключения.
  3. Увеличьте лимит памяти для очередей
person NoUserException    schedule 02.05.2013

Я не вижу очевидной причины в предоставленной конфигурации, почему он должен выйти из строя. Так что нужно прибегать к классической диагностике неисправностей.

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

Кроме того, проверьте прослушиватель исключений JMS и попробуйте прикрепить его к своей реализации, чтобы понять реальную проблему.

http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html

person Petter Nordlander    schedule 22.08.2012