我正在使用JMS入站通道适配器,它正在消耗来自MQ的消息并将这些消息发送到通道。此通道将此消息发送到服务激活器,并且SA解析此消息并将对象发送到将呼叫Web服务的WS出站网关。
适配器每30秒读取50条消息,服务激活器将它们发送到WS出站网关。 如果WS调用成功,则所有消息都处理成功,如果WS正在发送soapFaultException,那么Service Activator不处理其余消息并在下一轮处理它们,即30秒后,不确定原因。请帮忙
答案 0 :(得分:1)
我只能假设一种情况:
您的JMS入站通道适配器配置了poller
max-messages-per-poll="0"
因此,它会在一个JMS事务中轮询尽可能多的消息,并将它们逐个发送到通道。
由于所有这些都是在同一个线程中处理的,因此只有在整个群集之后才会将它们确认(确认,提交)到JMS中。
在批处理过程中至少有一个例外意味着将所有消息回滚到队列。
您可以使用taskExecutor
并行处理它们,甚至更好地切换到消息驱动的通道适配器,其中一条消息周围的TX不会影响所有其他消息。