- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为 jms 监听器配置了 spring 以使用来自 hornetQ 的消息,如下所示。
<bean name="connectionFactory" class="com.kp.jms.KPHornetQJMSConnectionFactory"
destroy-method="close">
<constructor-arg name="ha" type="boolean" value="false" />
<constructor-arg>
<array>
<ref bean="transportConfiguration"></ref>
</array>
</constructor-arg>
<property name="maxRetryInterval" value="10000" />
<property name="reconnectAttempts" value="10" />
<property name="retryInterval" value="5000" />
<property name="retryIntervalMultiplier" value="2" />
<property name="initialConnectAttempts" value="10" />
</bean>
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
</bean>
<bean name="kpJmsDelegator"
class="com.kp.KPDelegator">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
<jms:listener-container connection-factory="connectionFactory"
concurrency="1" >
<jms:listener destination="kpQueue" ref="kpJmsDelegator"
method="onMessage" />
</jms:listener-container>
当 hornetq 服务器启动并运行时,代码可以正常工作。然而,当我启动应用程序并且没有启动 hornetq 时,每 5 秒无法在警告模式下找到队列。我发现 DefaultMessageListenerContainer 类将默认恢复时间设置为 5 秒
。但是,我希望从连接工厂考虑恢复设置,并使用恢复尝试 10 次,如果仍然无法连接,则重新连接,导致在 jms 重新激活时手动重新启动服务器。由于不考虑重新尝试,我的日志被错误消息轰炸。我不确定我错在哪里,有人可以指出我做错了什么吗?
这是堆栈跟踪
014-04-24 18:27:27,159 [org.springframework.jms.listener.DefaultMessageListenerContainer#1-227] WARN o.s.j.l.DefaultMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'snmpQueue' - trying to recover. Cause: There is no queue with name kpQueue
javax.jms.JMSException: There is no queue with name snmpQueue
at org.hornetq.jms.client.HornetQSession.createQueue(HornetQSession.java:407) ~[hornetq-jms-2.2.21.Final.jar:2.2.21.SNAPSHOT (HQ_2_2_21_final, 122)]
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveQueue(DynamicDestinationResolver.java:101) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:66) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:221) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1119) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1095) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1088) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:985) ~[spring-jms-3.2.3.RELEASE.jar:3.2.3.RELEASE]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_32]
最佳答案
However I'm expecting the recovery settings to be considered from connection factory and use recovery attempts to be for 10times
这两个属性都不是 ConnectionFactory
合约的一部分,因此 DefaultMessageListenerContainer
无法弄清楚这一点。
您可以按如下方式重写配置以使用 10 秒恢复间隔:
<jms:listener-container connection-factory="connectionFactory"
concurrency="1" recovery-interval="10000">
<jms:listener destination="kpQueue" ref="kpJmsDelegator"
method="onMessage" />
</jms:listener-container>
没有办法限制恢复的数量,但您应该很容易从 DefaultMessageListenerContainer
扩展并创建您自己的 recoverAfterListenerSetupFailure
扩展。您可以重试多次,如果不起作用,您可以在容器上调用 stop
以停止监听该队列。这意味着,如果代理失败并在 20 分钟左右恢复,您的监听器将不再启用...
关于java - HornetQ 重新连接尝试无法与 DefaultMessageListenerContainer 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270113/
我希望这是一个简单的配置问题,但我似乎无法弄清楚它可能是什么。 设置 Spring-Boor 2.2.2.RELEASE 云启动器 云启动器-aws spring-jms spring-cloud-d
我有以下配置: // Some attributes 以及以下监听器: public class myListener implements MessageListener
我有一个 DefaultMessageListenerContainer 配置如下: DefaultMessageListenerContainer container = new DefaultMe
我希望这是一个简单的配置问题,但我似乎无法弄清楚它可能是什么。 设置 Spring-Boor 2.2.2.RELEASE 云启动器 云启动器-aws spring-jms spring-cloud-d
我正在将 Spring JMS 与以下上下文 XML 文件一起使用。 我的应用程序是命令行独立的,看起来像这样: public static void main(String[]
是否有可能在 onMessage 方法内部知道 MessageListener 正在监听哪个队列? 我的 Spring-config(其中一部分):
我有一个 DefaultMessageListenerContainer,它(在我看来)没有按比例放大。 Container 被定义为监听一个队列,其中有 100 条消息。 我希望容器可以达到任何长度
我正在努力模拟(使用 Mockito)DefaultMessageListenerContainer (org.springframework.jms.listener.DefaultMessageL
使用DefaultJmsListenerContainerFactory有什么好处在 DefaultMessageListenerContainer ? 如果我直接配置 DMLC,我会通过调用 isR
我已将 Spring DefaultMessageListenerContainer 配置为 ActiveMQ 消费者,使用队列中的消息。我们称之为“Test.Queue”我将此代码部署在 4 台不同
我是 Spring Framework 的新手,我的问题如下: 我想实例化 DefaultMessageListenerContainer以编程方式,我使用的代码是: DefaultMessageLi
对于我当前的项目,我需要使用来自许多目的地(从数百到 20 或 30k)的消息,所有目的地都是主题。目前(对于初始负载测试)所有消息都是在同一台服务器上本地创建的,在线程池中。 我当前的 spring
我有一个要求,我在一个队列中有消息,消息选择器的数量是可配置的。我需要并行处理这些消息的地方。 经过深思熟虑,我发现使用多个 DefaultMessageListenerContainer 会产生很好
如果我使用 DefaultMessageListenerContainer 的 Spring要接收 JMS 消息,即使我设置了 sessionAcknowledgeMode,我也不会重新发送 JMS
我开发了使用 Spring JMS 的项目来接收来自队列的消息。并部署Websphere应用服务器(WAS 7.5)集群环境。一旦部署到服务器中,它就工作正常。后来我更新了记录器信息并部署到服务器中。
我正在使用 spring 集成来监听 ibm mq,我想在 hibernate 模式下部署我的应用程序并在需要的时间启动它。因此,我使用了 DefaultMessageListenerContaine
我在 DefaultMessageListenerContainer 内使用 SimpleAsyncTaskExecutor,并且我想使用 JMX mbean 监视 Activity 线程计数。我创建
我有一个案例,我想在同一个“主”线程中运行 DefaultMessageListenerContainer。现在它使用 SimpleAsyncTaskExecutor 每次收到消息时都会生成新线程。
我已经为 jms 监听器配置了 spring 以使用来自 hornetQ 的消息,如下所示。
我正在使用 Spring JMS 连接到 Websphere MQ 服务器。我实现了 SessionAwareListener 接口(interface)来创建自定义监听器,为业务逻辑重用旧代码。 在
我是一名优秀的程序员,十分优秀!