1

我是 Spring 和 Spring 集成的新手,我决定双脚加入 - 现在,我被困住了。

考虑以下 Spring 配置 - 一个将请求发送到 AMQP 代理进行处理的入站网关:

<int:channel id="requestChannel" />
<int:channel id="responseChannel"/>
<int:channel id="myDiscardChannel"/>
<int-http:inbound-gateway id="myInboundGateway" 
                            request-channel="requestChannel"
                            reply-channel="responseChannel"
                            mapped-request-headers="*"
                            mapped-response-headers="Return-Status, Return-Status-Msg, HTTP_RESPONSE_HEADERS"       
                            path="/foo"
                            reply-timeout="50000"/>

<int:chain input-channel="requestChannel" output-channel="responseChannel">
    <int:filter expression="someExpression" discard-channel="myDiscardChannel" />
    <int-amqp:outbound-gateway amqp-template="amqpTemplate" exchange-name-expression="fooexchange" reply-timeout="50000" />
</int:chain>        

我希望能够做的是,当人为的“someExpression”表达式为代表 HTTP 请求的消息评估 false 时,使用适当的 HTTP 状态代码和有效负载完成原始请求。

我看过几种方法:

1) 设置过滤器以生成异常,并在错误通道上处理它们,但我似乎无法做到这一点 - 很难找到这种技术的合适示例。

2) 将过滤器设置为将丢弃的消息发送到丢弃通道——我还没有弄清楚如何生成消息并将其发送回将完成原始请求的入站网关。

任何帮助将不胜感激!

4

1 回答 1

2

只需将转换器订阅到丢弃通道;省略转换器上的输出通道,转换后的结果将返回到入站网关。

您可以responseChannel从入站网关和链(输出通道)中删除(回复通道);在这种情况下不需要它。

于 2013-09-28T02:31:23.610 回答