Spring Integration - int-http:inbound-gateway

时间:2015-04-28 04:37:07

标签: spring-integration

我已经定义了一个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 -->  

2 个答案:

答案 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"/>