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

spring 上下文,我发现问题在于它发出警告,因为队列 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

它只是意味着它无法连接到failover传输中的任何一个服务器。请注意,您有timeout=3000导致传输引发异常的原因。容器不断重试。

于 2013-02-20T20:28:37.887 回答
0

ActiveMQ 的日志记录由 Log4J“log4j.properties”文件控制。

您可以定义希望记录器显示的消息级别(警告、错误等),以及应在何处打印日志(控制台、log_file 等)。

在您的情况下,您可以禁用日志文件的 WARN 日志并在其他位置打印它们。

我个人想看看我的消息是在哪里发送的,以及故障转移是否无法发送到 ID 更喜欢知道的主机之一。

于 2013-02-21T10:13:48.437 回答
0

而不是使用 ; 在我使用“,”的两个经纪人之间,似乎正在工作

看这里了解详情

于 2013-02-21T17:06:59.497 回答