我刚接触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>
我希望能够做的是什么时候人为的表达&#34; someExpression&#34;表达式对表示HTTP请求的消息进行evaulate false,使用适当的HTTP状态代码和有效负载完成原始请求。
我看了几个方法:
1)设置过滤器以生成异常,并在错误通道上处理它们,但我似乎无法做到这一点 - 很难找到这种技术的正确例子。
2)设置过滤器以将丢弃的消息发送到丢弃信道 - 我还没有弄清楚如何生成消息并将消息发送回完成原始请求的入站网关。
任何帮助将不胜感激!
答案 0 :(得分:2)
只需将变压器订阅到丢弃信道;省略变压器上的输出通道,转换后的结果将返回到入站网关。
您可以从入站网关和链(输出通道)中删除responseChannel
(回复频道);在这种情况下不需要它。