网关中的Spring Integration错误通道

时间:2019-03-20 16:31:00

标签: spring-integration

我有一个rest控制器,它将触发我的网关方法

<int:gateway id="bGatewayService"
        service-interface="nd.l.eai.gw.BGateway"
        default-reply-channel="dest-channel"
        default-request-timeout="5000" default-reply-timeout="5000">        
        <int:method name="m1" request-channel="atbInChannel"/>
        <int:method name="m2" request-channel="btuInChannel"/>
    </int:gateway>

该应用程序正常运行。我没有错误通道[如您在上面看到的]

我的问题是-错误通道的优势是什么,因为如果没有它,我将收到500或Bad Request。我应该创建一个错误通道并包含在上面吗?

我也在使用默认回复渠道,可以吗?还是应该为每种方法添加回复通道?我有另一个具有10种方法的网关。

2 个答案:

答案 0 :(得分:1)

这取决于您想做什么;错误通道可让您分析错误并根据异常返回不同的结果。

例如您可以要求他们为暂时性错误重试,或者在请求中报告致命错误。

通常不需要答复通道,除非您要执行诸如添加电线接头来记录答复的操作。实际上,该通道最终被桥接到请求中的replyChannel标头(这是网关将请求/回复相关联的方式。

答案 1 :(得分:1)

如果您不会有一些补偿流程,则不需要error-channel。如果仅在您的用例中按正常情况抛出异常,则不要配置任何error-channel

在大多数情况下,我们甚至也不需要reply-channel。当您在流的最后一个端点中不使用default-reply-channel时,将使用output-channel标头。我们只需要replyChannel来用于需要某种发布订阅回复消息处理的用例,在这种情况下我们不仅要发送回复消息作为网关方法调用的返回,而且还希望将其发送给其他方法流。

更多信息在文档中:https://docs.spring.io/spring-integration/docs/current/reference/html/#gateway