Spring 集成 + 消息网关错误处理



我有一个由 REST 控制器调用的消息网关,我想知道处理下游流上可能发生的任何错误的正确方法是什么。

我所说的"处理任何错误"的意思是记录有关它们的一些信息,采取其他一些操作,最后能够向控制器返回 400。

对我来说,更有意义的方法是在网关上有一个错误通道,但我认为回复通道也可能有意义。

我已经能够使用"errorChannel"方法处理错误,不知道这是否是要走的路:

@MessagingGateway(errorChannel = "integrationFlowErrorChannel")
public interface OrderGateway {
@Gateway(requestChannel = "orders.input")
void processOrderRequest(Order order);
}

发送到错误通道的任何错误都由以下服务激活器处理:

@ServiceActivator(inputChannel="integrationFlowErrorChannel")
public void handleExceptions(Message<MessageHandlingException> message) throws RuntimeException {
log.error(String.format("error: %s", message));
log.error(String.format("error: %s", message.getPayload()));
throw new RuntimeException("something bad happened");
}

谢谢

你所拥有的是正确的。

但我认为回复渠道也可能有意义。

不清楚你的意思;通常不需要回复渠道,除非你想做一些事情,比如通过窃听记录回复或将回复发送到多个地方。

最新更新