Java - Spring - JMS
我正在使用带有JMS侦听器的Spring,以下是我的代码片段。
report.broker.url=failover:(tcp://w-dlapp00:5061?daemon=true;tcp://w-dlapp01:5061?daemon=true)?randomize=false&timeout=3000
spring context,我发现问题是它正在发出警告,因为队列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.
答案 0 :(得分:1)
这只是意味着它无法连接到failover
传输中的任何一个服务器。请注意,您有timeout=3000
导致传输引发异常。容器不断重试。
答案 1 :(得分:0)
ActiveMQ的日志记录由Log4J“log4j.properties”文件控制。
您可以定义您希望loger显示的消息级别(警告,错误等),以及应该打印日志的位置(控制台,log_file等)。
在您的情况下,您可以禁用日志文件的WARN日志,并将其打印到其他位置。
我个人想看看我的邮件发送到哪里,以及如果故障转移无法发送给其中一个主机,我更喜欢了解它。
答案 2 :(得分:0)
而不是使用;两个经纪人之间我使用','并且似乎正在工作