Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Spring集成中重新启动消息使用者?_Spring_Asynchronous_Activemq_Messaging_Spring Integration - Fatal编程技术网

如何在Spring集成中重新启动消息使用者?

如何在Spring集成中重新启动消息使用者?,spring,asynchronous,activemq,messaging,spring-integration,Spring,Asynchronous,Activemq,Messaging,Spring Integration,当发生异常或ActiveMQ失败时,应重新启动我的使用者(例如,正在使用来自通道的ActiveMQ消息的service activator)。如何在接下来的spring集成上下文中实现这一点 <!-- RECEIVER. message driven adapter -> jmsInChannel -> activator. --> <si:channel id="fromChannel"/> <int-jms:message-driven-cha

当发生异常或ActiveMQ失败时,应重新启动我的使用者(例如,正在使用来自通道的ActiveMQ消息的service activator)。如何在接下来的spring集成上下文中实现这一点

 <!-- RECEIVER. message driven adapter -> jmsInChannel -> activator. -->

<si:channel id="fromChannel"/>

<int-jms:message-driven-channel-adapter id="messageDrivenAdapter"
    channel="fromChannel" destination="forward" connection-factory="connectionFactory"
    max-concurrent-consumers="2" auto-startup="true" acknowledge="auto" extract-payload="false" />

<si:service-activator id ="activator" 
    input-channel="fromChannel"
    ref="messageService" 
    method="process"/>

<bean id="messageService" class="com.ucware.ucpo.forward.jms.MessageService"/>


我的第一个想法是使用并添加到服务中,但我不确定这是否是针对未处理异常的正确解决方案。如果ActiveMQ服务器关闭,我还希望接收器重新启动。

阅读我立即想到的您的帖子。这为如何通过SI应用程序本身监控SI应用程序提供了很好的见解

此外,您还应该查看SI的文档

将这些结合在一起,您可以使用JMX监视JMS消息适配器,并通过发送ApplicationEvent on问题来停止和重新启动它。关于捕获异常,这取决于您实际想要处理的异常。我将创建一个errorChannel来接收组件抛出的异常,并创建一个新服务,在接收到错误后重新启动这些组件


遵循您的想法利用SI的功能。

阅读您的帖子时,我立刻想到了。这为如何通过SI应用程序本身监控SI应用程序提供了很好的见解

此外,您还应该查看SI的文档

将这些结合在一起,您可以使用JMX监视JMS消息适配器,并通过发送ApplicationEvent on问题来停止和重新启动它。关于捕获异常,这取决于您实际想要处理的异常。我将创建一个errorChannel来接收组件抛出的异常,并创建一个新服务,在接收到错误后重新启动这些组件


按照您的想法,利用SI中的功能。

消息驱动通道适配器中的侦听器容器将在失去与代理的连接时自动继续尝试重新连接

如果设置“acknowledge=”transact“,则消息将在异常时回滚,代理将重新提交该消息


有状态重试建议允许您在多次重试后放弃并采取其他操作(但您也可以将其配置到ActiveMQ中,在多次传递尝试后将消息发送到DLQ).

消息驱动通道适配器中的侦听器容器在与代理失去连接时将自动继续尝试重新连接

如果设置“acknowledge=”transact“,则消息将在异常时回滚,代理将重新提交该消息


一个有状态的重试建议将允许您在多次重试后放弃并采取其他一些操作(但您也可以将其配置到ActiveMQ中,在多次尝试传递后,它将消息发送到DLQ)。

SI非常棒:)这对发送方也有效吗,例如出站通道适配器和网关?尝试与代理重新连接是否会永远持续?这是我需要的功能。对于出站适配器,您需要在失败后重试。是的,消息驱动适配器将“永远”重试连接。您能否提供一些提示,说明如何为出站适配器配置重试?文档:示例:SI非常棒:)这对发件人也有效吗,例如出站通道适配器和网关?尝试与代理重新连接是否会永远持续?这是我需要的功能。对于出站适配器,您需要在失败后重试。是的,消息驱动适配器将“永远”重试连接。您能否提供一些提示,说明如何为出站适配器配置重试?文档:示例: