在Mule Flow中自定义过滤器后返回不同的响应

时间:2012-07-16 17:42:14

标签: mule

这似乎是一件很常见的事情,但我无法弄清楚如何让它发挥作用。我为具有入站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

1 个答案:

答案 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元素。