获取soapfaultException后,服务激活器不处理来自通道的消息

时间:2016-03-17 18:34:11

标签: spring-integration

我正在使用JMS入站通道适配器,它正在消耗来自MQ的消息并将这些消息发送到通道。此通道将此消息发送到服务激活器,并且SA解析此消息并将对象发送到将呼叫Web服务的WS出站网关。

适配器每30秒读取50条消息,服务激活器将它们发送到WS出站网关。 如果WS调用成功,则所有消息都处理成功,如果WS正在发送soapFaultException,那么Service Activator不处理其余消息并在下一轮处理它们,即30秒后,不确定原因。请帮忙

1 个答案:

答案 0 :(得分:1)

我只能假设一种情况:

  1. 您的JMS入站通道适配器配置了poller max-messages-per-poll="0"

  2. 因此,它会在一个JMS事务中轮询尽可能多的消息,并将它们逐个发送到通道。

  3. 由于所有这些都是在同一个线程中处理的,因此只有在整个群集之后才会将它们确认(确认,提交)到JMS中。

  4. 在批处理过程中至少有一个例外意味着将所有消息回滚到队列。

  5. 您可以使用taskExecutor并行处理它们,甚至更好地切换到消息驱动的通道适配器,其中一条消息周围的TX不会影响所有其他消息。