2

Java - 春 - JMS

私は JMS リスナーで Spring を使用しています。以下は私のコード スニペットです。

report.broker.url=failover:(tcp://w-dlapp00:5061?daemon=true;tcp://w-dlapp01:5061?daemon=true)?randomize=false&timeout=3000

春のコンテキストで、キュー w-dlapp00:5061 がダウンしているために警告が表示されるという問題が見つかりましたが、フェイルオーバー中のため、他のキューが機能しています - どうすればこの警告を取り除くことができますか?

<!-- Active MQ changes -->
  <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL">
      <value>${royality.report.broker.url}</value>
    </property>
  </bean>

  <bean id="destinationRoyaltyReport" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="${royality.report.queue}"/>
  </bean>

  <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="defaultDestination" ref="destinationRoyaltyReport"/>
  </bean>

  <jms:listener-container connection-factory="connectionFactory">
    <jms:listener destination="${royality.report.markingrid.queue}" ref="royaltyReportListener" method="onReceivedRoyaltyReportGridRequest"/>
    <jms:listener destination="${royality.report.queue}" ref="royaltyReportListener" method="onReceivedRoyaltyReportViewRequest"/>
  </jms:listener-container>
  <!-- Active MQ changes -->

ログ ファイルを見ると、次のように JMS 情報と WARN ステートメントでいっぱいで、何が起こっているのかわかりませんでした。何かがクラッシュしているように見える警告メッセージがありますか?

2013-02-20 14:34:28,691 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] WARN  [DefaultMessageListenerContainer.java:834] : id[] Setup of JMS message listener invoker failed for destination 'royaltyReportMarkInGridQueue' - trying to recover. Cause: Failover timeout of 3000 ms reached.
2013-02-20 14:34:31,763 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-1] WARN  [DefaultMessageListenerContainer.java:834] : id[] Setup of JMS message listener invoker failed for destination 'royaltyReportQueue' - trying to recover. Cause: Failover timeout of 3000 ms reached.
2013-02-20 14:34:31,767 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] INFO  [FailoverTransport.java:507] : id[] Failover timed out after 3073ms
2013-02-20 14:34:31,768 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] WARN  [DefaultMessageListenerContainer.java:888] : id[] Could not refresh JMS Connection for destination 'royaltyReportMarkInGridQueue' - retrying in 5000 ms. Cause: Failover timeout of 3000 ms reached.
2013-02-20 14:34:34,838 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-1] INFO  [FailoverTransport.java:507] : id[] Failover timed out after 3073ms
2013-02-20 14:34:34,838 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-1] WARN  [DefaultMessageListenerContainer.java:888] : id[] Could not refresh JMS Connection for destination 'royaltyReportQueue' - retrying in 5000 ms. Cause: Failover timeout of 3000 ms reached.
2013-02-20 14:34:39,839 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] INFO  [FailoverTransport.java:507] : id[] Failover timed out after 3065ms
2013-02-20 14:34:39,841 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] WARN  [DefaultMessageListenerContainer.java:888] : id[] Could not refresh JMS Connection for destination 'royaltyReportMarkInGridQueue' - retrying in 5000 ms. Cause: Failover timeout of 3000 ms reached.
2013-02-20 14:34:42,910 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-1] INFO  [FailoverTransport.java:507] : id[] Failover timed out after 3068ms
2013-02-20 14:34:42,910 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-1] WARN  [DefaultMessageListenerContainer.java:888] : id[] Could not refresh JMS Connection for destination 'royaltyReportQueue' - retrying in 5000 ms. Cause: Failover timeout of 3000 ms reached.
4

3 に答える 3

1

これは単に、トランスポート内のいずれのサーバーにも接続できないことを意味しますfailovertimeout=3000トランスポートが例外をスローする原因があることに注意してください。コンテナーは再試行を続けます。

于 2013-02-20T20:28:37.887 に答える
0

を使用する代わりに; 「、」を使用した2つのブローカー間で機能しているようです

詳細はこちらをご覧ください

于 2013-02-21T17:06:59.497 に答える
0

ActiveMQ のロギングは、Log4J の「log4j.properties」ファイルによって制御されます。

ロガーに表示するメッセージのレベル (警告、エラーなど) と、ログを出力する場所 (コンソール、log_file など) を定義できます。

あなたの場合、ログファイルのWARNログを無効にして、他の場所に出力できます。

個人的には、メッセージが送信された場所と、フェイルオーバーがホスト ID の 1 つに送信できなかった場合は、それについて知りたいと考えています。

于 2013-02-21T10:13:48.437 に答える