0

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

4

1 回答 1

0

在您的情况下使用选择路由器会更好:

<choice>
  <when expression="...validation expression...">
    <!--  Process valid messages here -->
    <!--  Return a successful response  -->
  </when>
  <otherwise>
    <!--  Return a failure response  -->
  </otherwise>
</choice>    

如果位于 末尾,则不需要任何response元素。choiceflow

于 2012-07-16T19:41:29.707 回答