2016-11-14 18 views
2

私はMulesoftを使用してAPIを設計しており、応答に10秒以上かかると一般的な応答を返すようにしたいと考えています。現在、私はHTTPコネクタを使用してAPI内の別のフローを呼び出すことでこれを達成しています。Mulesoftのフロータイムアウト

<http:request-config name="HTTP_Request_Configuration" host="localhost" port="8081" responseTimeout="10000" doc:name="HTTP Request Configuration"/> 
<flow name="Incomming-Flow"> 
    <!-- get request --> 
    <http:request config-ref="HTTP_Request_Configuration" path="/validationWithTimeout" method="POST" doc:name="HTTP"/> 
    <catch-exception-strategy doc:name="Catch Exception Strategy"> 
     <!-- Set payload to generic response when http call times out --> 
    </catch-exception-strategy> 
</flow> 
<flow name="Processing-Flow"> 
    <http:listener config-ref="HTTP_Request_Configuration" path="/validationWithTimeout" allowedMethods="POST" doc:name="HTTP"/> 
    <!-- 
     processing components go here 
    --> 
</flow> 

時間がかかり過ぎると、フローを停止して一般的な応答を返す良い方法がありますか?

答えて

0

片方向 - 例外処理内でキャプチャし、必要なステータスをセットペイロードに設定します。サンプルは次のとおりです。また、マッピング例外戦略を使用してステータスコードに基づいてキャプチャすることもできます。

<flow name="Incomming-Flow"> 
    <!-- get request --> 
    <http:request config-ref="HTTP_Request_Configuration" path="/validationWithTimeout" method="POST" doc:name="HTTP"/> 
    <catch-exception-strategy doc:name="Catch Exception Strategy" when="java.net.ConnectException"> 
    <set-property propertyName="http.status" value="#[403]" doc:name="Property"/> 
    <set-payload value="{&quot;success&quot;:false,&quot;errors&quot;:[{&quot;code&quot;:&quot;50001&quot;,&quot;message&quot;:&quot;Internal Server Error&quot;,&quot;details&quot;:&quot;An internal system error has occurred, please contact the support team.&quot;}]}" doc:name="Set Payload" mimeType="application/json"/> 
    </catch-exception-strategy> 
</flow> 
+0

これは私の質問にはあまり答えません。 Imは例外をキャッチすることを心配していません。私は、フローが10秒以上かかる場合、例外をスローすることができるようにしたい。私は自分自身を呼び出すために私のAPIの内部にHTTPコネクタを使用する必要はありません。 – ed54

0

グローバル設定でdefaultResponseTimeoutを設定できます。あなたの<mule>要素の中に以下を入れてください。 <configuration defaultResponseTimeout="10000"></configuration> ただし、これはすべてのフローに適用されます。例外ハンドラで例外を設定できます。

Global Configuration Settings

Global Configuration Attributes

1

上記の構成を確認した後、唯一欠けている点は、それのタイムアウト変数と使用され、それはタイムアウトがスローする必要があり、これまで、応答のときのために10秒間のタイムアウトを定義してください。例外。

-1

設定ごとに、フローは上記のURLにヒットしようとしています。 (あなたが唯一のHTTPを使用して、いないHTTPSしている場合は、TLSの一部を回避することができます)、応答タイムアウトでサンプルHTTPリクエストの設定の下に見つけてください:

<configuration defaultTransactionTimeout="300000" defaultResponseTimeout="300000" doc:name="Configuration"> 
<default-threading-profile poolExhaustedAction="RUN"/> 

お手伝いを希望。

0

ポーリングを使用して1秒ごとにチェックし、変数を設定することができます。カウントが10秒、つまり10秒に達するとすぐに、エラーメッセージを印刷したり、必要な例外フローに転送したりできます。

0

API /フロー固有の場合は、例外戦略で処理し、汎用応答をマップするDatawaveを作成することが適切です。

0

まず設定のHttpその後、投票コネクタとあなたの条件のための1秒としてポーリング頻度を設定し、各その後のforeach内部カウンタ変数で、第2一人ひとりのために更新されます使用の内部、 setpayloadカウンタが10に等しいかどうかをチェックして、必要な応答を送信します。

0

Httpコネクタでタイムアウトを10秒に設定します。 例外戦略では、APIのために返す汎用ペイロードでタイムアウト例外フローを設定してください。

0

これを試す -

a。世界的に与えられたアプリケーション

用アプリケーションのグローバル要素のコンフィギュレーションを追加し、defaultResponseTimeout属性を設定します。

<configuration defaultResponseTimeout="10000" /> 

B。具体的に流れ

のためにあなたのアプリケーションに添付TimeoutMessageProcessorを追加し、発信エンドポイントの前にそれを置く:

<custom-processor class="com.mule.support.TimeoutMessageProcessor"> 
    <spring:property name="timeout" value="10000" /> 
</custom-processor> 
0

、あなたは他の手段でRESTサービスにアクセスできるかどうかをチェックし、他のしてくださいミュールの流れを介して接続するよりも。あなたは本当にサービスを実行しています。これはURL形式をとり、GETサービスとして公開されています。 http://1.1.1.1:80/TEST_OUTBOUND

0

Httpコネクタでタイムアウトを10秒に設定します。例外戦略では、APIに返す汎用ペイロードでタイムアウト例外フローを設定してください。

関連する問題