如何使用jms添加重试建议:消息驱动通道适配器

时间:2015-10-09 01:57:28

标签: spring-integration

我是Spring集成的新手。我的要求是,如果jms q存在连接问题,那么它应该尝试连接3次然后记录它并退出进程。我无法做到。它抛出一个错误,说它需要service:activator的ref属性。但我没有/知道在这里提供哪个类的参考。还有其他办法吗?

<int-jms:message-driven-channel-adapter id="msgIn" channel="toRoute" container="messageListenerContainer" />

<int:service-activator id="service" input-channel="toRoute" >
    <int:request-handler-advice-chain>
        <bean class="org.springframework.integration.handler.advice.RequestHandlerRetryAdvice">
		<property name="recoveryCallback">
                <bean class="org.springframework.integration.handler.advice.ErrorMessageSendingRecoverer">
                    <constructor-arg ref=“errorChannel" />
                </bean>
            </property>
	  </bean>
    </request-handler-advice-chain>
</int:service-activator>

1 个答案:

答案 0 :(得分:0)

你似乎完全误解了框架的作用。

当从JMS接收到一个消息时,服务激活器会收到一条消息(这意味着连接是好的),并且由于接收到该消息而需要“某事”(对bean或表达式的引用)进行调用。

重试建议是,如果由于某种原因无法处理该消息,则重试调用该服务。它与消息的来源无关(在这种情况下为JMS)。

目前尚不清楚为什么要尝试将Spring Integration用于测试JMS代理是否可用这样简单的事情。

也许如果你能提供更大的背景,有人可能会提供帮助。