これはかなり一般的なことのように思えますが、それを機能させる方法を理解するのに苦労しています。インバウンドの http エンドポイントを持つリクエスト/レスポンス フロー用のカスタム フィルターを作成しました。カスタム フィルターは、特定の必須クエリ パラメーターが存在し、有効な値が含まれているかどうかを確認します。フィルターがメッセージを拒否した場合、HTTP エラー ステータス コードを返したいのですが、別の応答を送信する方法がわかりません。
Mule のドキュメントには次のように書かれています。
フローで定義されたインバウンド エンドポイントに要求と応答の交換パターンがあり、フローに応答ブロックがない場合、使用される応答は単にフロー内の最後の Message Processor からの結果であり、null になります。
これが完全に正確かどうかはわかりません。フローには<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