我是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>
答案 0 :(得分:0)
你似乎完全误解了框架的作用。
当从JMS接收到一个消息时,服务激活器会收到一条消息(这意味着连接是好的),并且由于接收到该消息而需要“某事”(对bean或表达式的引用)进行调用。
重试建议是,如果由于某种原因无法处理该消息,则重试调用该服务。它与消息的来源无关(在这种情况下为JMS)。
目前尚不清楚为什么要尝试将Spring Integration用于测试JMS代理是否可用这样简单的事情。
也许如果你能提供更大的背景,有人可能会提供帮助。