2017-07-26 12 views
0

春の統合ハンドラ・エラー - >確認-ACKチャンネル私がやりたい

  1. は、Webサービスからメッセージを受信
  2. はウサギ
  3. 検証XMLにXMLメッセージを送りますXSDへ - >起動例外(間違った検証)Webサービスへ
  4. 戻るカスタムエラーメッセージ

ステップ1:Webサービスからのメッセージを受け取ります - > RESULT OK

<ws:inbound-gateway id="ws-inbound-gateway" 
     request-channel="requestChannel" reply-channel="replyChannel" reply-timeout="300000" 
     error-channel="errorChannel" /> 
<int:chain input-channel="requestChannel" output-channel="inbound"> 
     <int:service-activator ref="defaultLogger" method="logger"/> 
</int:chain> 

ステップ2:ファンアウト交換ウサギにおけるXMLメッセージを書く - > OK RESULT

<int-amqp:outbound-channel-adapter 
    channel="inbound" amqp-template="amqpTemplate" return-channel="outbound" 
    exchange-name="es.queue.test" 
    confirm-ack-channel="confirmAck" confirm-nack-channel="confirmNack" confirm-correlation-expression="#this" /> 

ステップ3:XMLの検証にXSD - > [OK] XsdValidationExceptionを結果

<int:chain input-channel="confirmAck" output-channel="outbound"> 
     <int:service-activator ref="defaultLogger" method="logger"/> 
     <int-xml:validating-filter schema-type="xml-schema" 
      schema-location="classpath:/schema/prueba.xsd" 
      throw-exception-on-rejection="true" discard-channel="errorChannel" /> 
    </int:chain> 

このステップでは、メッセージはerrorChannelに送信されますが、私は次のエラーがあります:

63863 [AMQP Connection 10.0.9.155:5672] ERROR o.s.a.r.s.PublisherCallbackChannelImpl - Exception delivering confirm 
org.springframework.integration.MessageRejectedException: Message was rejected due to XML Validation errors; nested exception is org.springframework.integration.xml.AggregatedXmlMessageValidationException: Multiple causes: 
    cvc-elt.1: No se ha encontrado la declaración del elemento 'ns2:***'. 

    at org.springframework.integration.xml.selector.XmlValidatingMessageSelector.accept(XmlValidatingMessageSelector.java:134) 
    at org.springframework.integration.filter.MessageFilter.doHandleRequestMessage(MessageFilter.java:161) 
    at org.springframework.integration.handler.AbstractReplyProducingPostProcessingMessageHandler.handleRequestMessage(AbstractReplyProducingPostProcessingMessageHandler.java:46) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:109) 

ステップ4:Webサービスクライアントは応答を受け取ることはありません 私は、確認の送信を試行すると例外がスレッドAMQPにスローされるため、「例外を確認します」というエラーが発生すると思います。

私を助けることができますか?あなたがthrow-exception-on-rejection="true"を使用して、流れを壊すなぜあなたは私たちに説明しなければならない場合を除き

答えて

0

すべてがよさそうですか?

でもconfirm-correlation-expression="#this"requestMessageconfirm-ack-channelに実際に渡すと思うので、そのサブフローからWSゲートウェイに返信を返すことができます。

しかし! throw-exception-on-rejection="true"以降、outboundチャンネルには何も送信されません。

またreturn-channelは、返信用ではありません。ブローカがいくつかの誤った設定のためにメッセージをキューに配送できないときの別のエラー状態です:http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/

関連する問題