所以我在Spring Integration中有一个配置,如下所示:
POS - >通过传递ID调用SI - >获取该ID的详细信息 - >点击API网址
现在我想要实现的是,
POS - >通过传递ID调用SI - >获取该ID的详细信息 - > 如果不为null(如果为null,则打破流程) - >点击API网址
我的配置文件如下所示:
<int-http:inbound-gateway id="CNInvokeFromPOS"
supported-methods="GET"
request-channel="CNInvokeRequest"
reply-channel="CNInvokeResponse"
path="/postToCN/{CNId}"
mapped-response-headers="Return-Status, Return-Status-Msg, HTTP_RESPONSE_HEADERS"
reply-timeout="10000" >
<int-http:header name="CNId" expression="#pathVariables.CNId"/>
</int-http:inbound-gateway>
<int:service-activator id="motorCNInvokeActivator"
input-channel="CNInvokeRequest"
output-channel="CNInvokeResponse"
ref="apiCNService"
method="getCNDetailsById"
requires-reply="true"
send-timeout="10000"/>
<int:transformer input-channel="CNInvokeResponse"
ref="apiCNTransformer"
method="retrieveJson"
output-channel="CNInvokeRequest"/>
<int-http:outbound-gateway request-channel="CNInvokeRequest" reply-channel="CNInvoketransformerOut"
url="http://someurl" http-method="POST"
expected-response-type="java.lang.String">
</int-http:outbound-gateway>
<int:service-activator
input-channel="CNInvoketransformerOut"
output-channel="CNInvokeobjTransformerOut"
ref="apiCNService"
method="responseCN"
send-timeout="10000"/>
我知道错误通道,但问题是,如果返回的值为null,我不想继续或重试!打破它,停止流动。有人能指出我可能采取的方法吗?
答案 0 :(得分:1)
返回null结束流程;不会采取进一步的操作,但是在您的配置下,入站网关线程将在超时前等待10秒钟。
然后将500状态返回给调用者;您可以使用reply-timeout-status-code-expression
更改该行为。
由于您只使用直接通道,因此可以安全地将回复超时设置为零 - 在线程返回网关之前,计时器不会启动。