如何使用 jms:message-driven-channel-adapter 添加重试建议
how to add a retry advice with jms:message-driven-channel-adapter
我是 spring 集成的新手。我的要求是,如果 jms q 存在连接问题,那么它应该尝试连接 3 次,然后记录并退出进程。我做不到。它抛出一个错误,指出它需要 service:activator 的 ref 属性。但我不 have/know 参考 class 在这里提供。还有其他方法吗?
<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>
您似乎完全误解了框架的作用。
服务激活器在从 JMS 收到一条消息时得到一条消息(这意味着连接良好),并且需要 "something"(对 bean 或表达式的引用)作为调用的结果收到该消息。
重试建议是,如果由于某种原因无法处理消息,则重试调用该服务。它与消息的来源无关(在本例中为 JMS)。
不清楚您为什么要尝试使用 Spring 集成来做一些像测试 JMS 代理是否可用这样简单的事情。
如果您可以提供一些更大的背景信息,也许有人可以提供帮助。
我是 spring 集成的新手。我的要求是,如果 jms q 存在连接问题,那么它应该尝试连接 3 次,然后记录并退出进程。我做不到。它抛出一个错误,指出它需要 service:activator 的 ref 属性。但我不 have/know 参考 class 在这里提供。还有其他方法吗?
<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>
您似乎完全误解了框架的作用。
服务激活器在从 JMS 收到一条消息时得到一条消息(这意味着连接良好),并且需要 "something"(对 bean 或表达式的引用)作为调用的结果收到该消息。
重试建议是,如果由于某种原因无法处理消息,则重试调用该服务。它与消息的来源无关(在本例中为 JMS)。
不清楚您为什么要尝试使用 Spring 集成来做一些像测试 JMS 代理是否可用这样简单的事情。
如果您可以提供一些更大的背景信息,也许有人可以提供帮助。