2016-04-14 9 views
1

私は春の統合の初心者です。以下は私のコードです。春の統合HTTPのアウトバウンドゲートウェイ例外の再試行

<int-jms:message-driven-channel-adapter 
    id="testListenter" destination-name="testQueue" 
    channel="setTestHeader" concurrent-consumers="2" 
    max-concurrent-consumers="5" connection-factory="amqConnectionFactory" /> 

<http:outbound-gateway request-channel="httpChannel" 
    url="http://APITesting/testHttp/v1.0" http-method="POST" 
    header-mapper="headerMapper" reply-channel="response.header.enricher" 
    error-handler="testErrorHandler" 
    expected-response-type="com.test.domain.response.responseObject" message-converters="messageConverters" /> 

<util:list id="messageConverters"> 
    <bean id="formHttpMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"/> 
    <bean id ="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
</util:list> 

ログに例外が表示されません。

私は、応答がJSONであることを期待しています。しかし、レスポンスがJSONでなく、タイプrawの場合、アウトバウンドゲートウェイは少なくとも7回自動的に起動されます。

このようなシナリオの場合にAPIが起動される理由は何ですか?

答えて

0

RequestHandlerRetryAdviceがありませんので、<http:outbound-gateway>の場合、「atleast 7 times automatically」は完全にアップストリーム発信者に依存しています。たとえば、JMSメッセージドライバチャネルアダプタは、ダウンストリームで何らかの例外がある場合、同じメッセージの再配信を行います。

AMQPと同じです。

「あなたの財布には何がありますか?」

再試行の動作を確認しているときは、org.springframework.integrationカテゴリのログを共有してください。org.springframework.integration

+0

こんにちはArtem、そうです、私のアップストリームの発信者はJMS Message Driven Channel Adapterであり、私はエラーチャンネルを設定していません。しかし、私の理解は、私がアウトバウンドゲートウェイ用に設定したエラーハンドラは、例外を捕まえることになっていました。もし私が間違っているなら、親切に私を修正してください。

+0

あなたの質問に 'edit'関数を使ってコードを移動させるべきです。また、再配信を防止するための 'error-channel'は' JMS Message Driven Channel Adapter'で宣言されるべきです。 –

+0

提案していただきありがとうございます。質問に自分のコードを追加しました。 –

関連する問題