这似乎是一件很常见的事情,但我无法弄清楚如何让它发挥作用。我为具有入站http端点的请求 - 响应流编写了自定义过滤器。自定义筛选器检查是否存在某些必需的查询参数并包含有效值。如果过滤器拒绝一条消息,我想返回一个HTTP错误状态代码,但我无法弄清楚如何发送不同的响应。
骡子文档说:
如果Flow上定义的入站端点具有请求 - 响应 交换模式,然后您的流程中没有响应块 使用的响应只是最后一个消息处理器的结果 在流程中,它将为空。
我不确定这是否完全准确。我的流有一个<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
答案 0 :(得分:0)
在您的情况下使用choice router会更好:
<choice>
<when expression="...validation expression...">
<!-- Process valid messages here -->
<!-- Return a successful response -->
</when>
<otherwise>
<!-- Return a failure response -->
</otherwise>
</choice>
如果response
位于choice
的末尾,则不需要flow
元素。