我的配置中有以下标题更丰富。
<int:header-enricher input-channel="" output-channel="" id="" >
<int:header name="OrderNo" expression="@gateway.exchange(#root).payload"/>
</int:header-enricher>
当有效负载为空时,我收到异常
java.lang.IllegalArgumentException: payload must not be null
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.integration.support.MessageBuilder.<init>(MessageBuilder.java:56) ~[spring-integration-core-4.0.5.RELEASE.jar:na]
如果有效负载为空,是否有办法从网关检查空有效负载并在标头中设置一些虚拟值?
<int:gateway id="gateway" default-request-channel="defReqChannel" />
<int-jdbc:stored-proc-outbound-gateway request-channel="defReqChannel" data-source="dataSourceDD" expect-single-result="true" is-function="false" stored-procedure-name="SP_GET_CODE">
<int-jdbc:sql-parameter-definition name="param1" direction="IN" />
<int-jdbc:sql-parameter-definition name="param2" direction="IN" />
<int-jdbc:sql-parameter-definition name="param3" direction="INOUT" />
<int-jdbc:sql-parameter-definition name="param4" direction="IN" />
<int-jdbc:parameter name="param1" expression="exp1" />
<int-jdbc:parameter name="param2" expression="exp2" />
<int-jdbc:parameter name="param3" value="0"/>
<int-jdbc:parameter name="param4" value="0"/>
</int-jdbc:stored-proc-outbound-gateway>
我正在调用的存储过程可以返回null值。 (参数3)。失败发生在那些场景中
答案 0 :(得分:0)
请分享更多StackTrace。 payload
中的null
无法为Message
。您显示的代码完全由Framework控制。
我认为当您执行MessageBuilder.withPayload(null)
之类的操作时会有代码。
但完全不是你演示的配置的情况。
<强>更新强>
这真是一个错误:https://jira.spring.io/browse/INT-4202。
解决方法就像不使用expect-single-result="true"
并手动从结果Map
下游提取目标值。