【发布时间】:2022-01-17 04:18:49
【问题描述】:
我正在处理一个场景,我必须在第一次调用中获取令牌,然后在第二次调用中验证该令牌。
我的 spring 集成文件看起来像
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:integration="http://www.springframework.org/schema/integration"
xmlns:ws="http://www.springframework.org/schema/integration/ws"
xmlns:http="http://www.springframework.org/schema/integration/http"
xsi:schemaLocation="http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd
http://www.springframework.org/schema/integration/ws http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
<!-- Entry channel into this flow is ucipTopupChannel -->
<integration:transformer id="ayobaSmsRequestTransformer"
input-channel="ayobaSMSChannel"
output-channel="ayobaSmsTransformerOutputChannel"
ref="ayobaSmsTransformer"
method="ayobaSmsRequestTransform" />
<integration:channel id="ayobaSmsTransformerOutputChannel" />
<integration:header-value-router id="ayobaSmsValidationRouter" input-channel="ayobaSmsTransformerOutputChannel" header-name="VALIDATION">
<integration:mapping value="FAILED" channel="ayobaSmsValidationFailedChannel" />
<integration:mapping value="PASSED" channel="ayobaSmsValidationRouterOutputChannel" />
</integration:header-value-router>
<integration:channel id="ayobaSmsValidationFailedChannel" />
<integration:service-activator input-channel="ayobaSmsValidationFailedChannel" ref="validationFailedServiceActivator" />
<integration:channel id="ayobaSmsValidationRouterOutputChannel" />
<integration:object-to-json-transformer id="ayobaJsonTransformer"
input-channel="ayobaSmsValidationRouterOutputChannel"
output-channel="ayobaJsonChannel"
object-mapper="customObjectMapper"
content-type="application/json" />
<integration:channel id="ayobaJsonChannel" />
<http:outbound-gateway id="ayobaSmsOutboundGateway"
extract-request-payload="true"
url-expression="headers['url']"
request-channel="ayobaJsonChannel"
reply-channel="ayobaSmsOutputChannel"
mapped-request-headers="contentType,ERSREFERENCE,Authorization"
expected-response-type="java.lang.String"
rest-template="ayobaRestTemplate" />
<integration:transformer id="ayobaSmsResponseTransformer"
input-channel="ayobaSmsOutputChannel"
ref="ayobaSmsTransformer"
method="ayobaSmsResponseTransform" />
<integration:channel id="ayobaSmsOutputChannel" />
</beans>
但现在我必须检查 tokenExpiry,我试图为其保存额外的通话,但我遇到了错误
原因:org.springframework.messaging.core.DestinationResolutionException:没有可用的 output-channel 或 replyChannel 标头
我的配置文件看起来像
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:integration="http://www.springframework.org/schema/integration"
xmlns:ws="http://www.springframework.org/schema/integration/ws"
xmlns:http="http://www.springframework.org/schema/integration/http"
xsi:schemaLocation="http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd
http://www.springframework.org/schema/integration/ws http://www.springframework.org/schema/integration/ws/spring-integration-ws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
<!-- Entry channel into this flow is ucipTopupChannel -->
<integration:transformer id="ayobaSmsRequestTransformer"
input-channel="ayobaSMSChannel"
output-channel="ayobaSmsTransformerOutputChannel"
ref="ayobaSmsTransformer"
method="ayobaSmsRequestTransform" />
<integration:channel id="ayobaSmsTransformerOutputChannel" />
<integration:header-value-router id="ayobaSmsValidationRouter" input-channel="ayobaSmsTransformerOutputChannel" header-name="VALIDATION">
<integration:mapping value="FAILED" channel="ayobaSmsValidationFailedChannel" />
<integration:mapping value="PASSED" channel="ayobaSmsValidationRouterOutputChannel" />
<integration:mapping value="CACHED" channel="ayobaSmsOutputChannel" />
</integration:header-value-router>
<integration:channel id="ayobaSmsValidationFailedChannel" />
<integration:service-activator input-channel="ayobaSmsValidationFailedChannel" ref="validationFailedServiceActivator" output-channel="ayobaSmsOutputChannel" requires-reply="false" />
<integration:channel id="ayobaSmsValidationRouterOutputChannel" />
<integration:object-to-json-transformer id="ayobaJsonTransformer"
input-channel="ayobaSmsValidationRouterOutputChannel"
output-channel="ayobaJsonChannel"
object-mapper="customObjectMapper"
content-type="application/json" />
<integration:channel id="ayobaJsonChannel1" />
<http:outbound-gateway id="ayobaSmsOutboundGateway"
extract-request-payload="true"
url-expression="headers['url']"
request-channel="ayobaJsonChannel"
reply-channel="ayobaSmsOutputChannel"
mapped-request-headers="contentType,ERSREFERENCE,Authorization"
expected-response-type="java.lang.String"
rest-template="ayobaRestTemplate" />
<integration:channel id="ayobaJsonChannel" />
<http:outbound-gateway id="ayobaSmsOutboundGateway"
extract-request-payload="true"
url-expression="headers['url']"
request-channel="ayobaJsonChannel"
reply-channel="ayobaSmsOutputChannel"
mapped-request-headers="contentType,ERSREFERENCE,Authorization"
expected-response-type="java.lang.String"
rest-template="ayobaRestTemplate" />
<integration:transformer id="ayobaSmsResponseTransformer"
input-channel="ayobaSmsOutputChannel"
ref="ayobaSmsTransformer"
method="ayobaSmsResponseTransform" />
<integration:channel id="ayobaSmsOutputChannel" />
</beans>
现在,我很吃惊,因为对于最后一个频道ayobaSmsResponseTransformer,它在验证调用中工作正常并且不会出错,但对于我的缓存令牌调用,它会抛出异常。
【问题讨论】:
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: java xml spring spring-boot spring-integration