这似乎是一件很常见的事情,但我无法弄清楚如何让它发挥作用。我为具有入站 http 端点的请求-响应流编写了一个自定义过滤器。自定义过滤器检查某些必需的查询参数是否存在并包含有效值。如果过滤器拒绝消息,我想返回一个 HTTP 错误状态代码,但我不知道如何发送不同的响应。
Mule 文档说:
如果流上定义的入站端点具有请求-响应交换模式并且流中没有响应块,则使用的响应只是流中最后一个消息处理器的结果,它将为空。
我不确定这是否完全准确。我的流程确实有一个<response>
块,但如果我的自定义过滤器返回 false,它不会被调用。
如果过滤器拒绝消息,返回不同响应的最佳方法是什么?
这是我的流程示例:
<flow name="Incoming_requests">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="incoming" />
<http:body-to-parameter-map-transformer />
<custom-filter class="com.mycompany.MyQueryParamFilter"/>
<!-- Process valid messages here -->
<response>
<!-- Return a successful response -->
</response>
</flow>
编辑:这是推断<response>
将执行块的文档。
http://www.mulesoft.org/documentation/display/MULE3USER/Using+Filters#UsingFilters-UsinginFlows