我已经定义了一个int-http:inbound-gateway,它有一个请求通道和一个回复通道。请求通道连接到服务激活器,该服务激活器验证消息并通过其输出通道返回消息响应。如何将验证的消息转发到另一个端点以进行进一步的消息处理?就像我需要2个输出通道,一个用于响应,一个用于消息。
<int-http:inbound-gateway
request-channel="requestChannel"
reply-channel="responseChannel"
supported-methods="POST"
path="/message/hl7/{source}">
<int-http:request-mapping
consumes="application/json" produces="application/json"/>
<int-http:header name="source" expression="#pathVariables.source"/>
</int-http:inbound-gateway>
<int:service-activator ref="HL7MessageEndpoint"
method="POST"
input-channel="requestChannel"
output-channel="responseChannel"/>
<!-- need to send original message to jms if service activator validates successfully -->
答案 0 :(得分:1)
将回复频道更改为<publish-subscribe-channel/>
。这样,回复将返回到网关,您可以订阅另一个组件。您可能需要向通道添加任务执行程序,以便下游流不会在Web容器线程上运行。
答案 1 :(得分:0)
如果消息有效,在变换器中添加一个标志 返回MessageBuilder.withPayload(Dto).setHeader(&#34; ValidFlag&#34;,Dto.getValidFlag()。toString()) 。建立(); 添加路由器以确定消息是否有效 定义进出渠道
`<channel id="requestInChannel"/>
<channel id="outputActivatorInChannel" />
<channel id="validatorInChannel"/>
<header-value-router input-channel="requestInChannel"
header-name="validFalg" default-output-channel="validatorInChannel"
resolution-required="false">
<mapping value="false" channel="outputActivatorInChannel" />
<mapping value="true" channel="validatorInChannel" />
</header-value-router>`
如果消息有效,则将通道设置为两个不同的激活器
<int:service-activator ref="OutputActibvator"
method="POST"
input-channel="validatorInChannel"
output-channel="responseChannel"/>