我有一个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种方法的网关。
答案 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