首页 文章

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

提问于
浏览
1

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

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

1 回答

  • 1

    我只能假设一种情况:

    • 您的JMS入站通道适配器配置了 poller ,用于 max-messages-per-poll="0"

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

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

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

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

相关问题