3

1 か月以来、activemq と spring で問題が再発しています。しばらくすると (1 日から 1 週間の間) コンシューマーがなくなり、新しいコンシューマーが開始されなくなり、キューがいっぱいになり始めます。

このセットアップは 1 年以上実行されましたが、問題はなく、関連する変更は何も見られませんでした。

私たちが使用している別のキューも同じ動作を示し始めましたが、頻度は低くなりました。

activemq webconsole から (多くの保留中のメッセージが表示され、コンシューマーが表示されないため)

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>

どのログにも例外はありません。しばらくして新しい消費者を開始できなかった理由を知っている人はいますか?

ありがとう

4

2 に答える 2

1

失敗する理由が提供されている構成には、明らかな理由がわかりません。したがって、古典的なトラブルシューティングに頼る必要があります。

問題をデバッグして再作成するようにロギングを設定してみてください。そうすれば、もっと見ることができ、その根本的な原因を見つけることができるかもしれません。

また、JMS例外リスナーを確認し、それを実装に添付して、実際の問題を把握してください。

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

于 2012-08-22T21:44:17.050 に答える