2017-11-01 4 views
0

スプリング統合を使用してアウトバウンドゲートウェイ用にアプリケーションによって生成された識別子を使用したAMQPカスタムメッセージの相関。アプリケーションによって生成された識別子を使用したAMQPカスタムメッセージの相関

アウトバウンドゲートウェイのメッセージとappによって生成されたIDを関連付ける必要があるという要件があります。これは、実際のメッセージ処理が外部システムで行われ、要求に対する応答が外部システムからのポストとして行われるしたがって、amqp_correlationデータに依存することはできません。

これを実行すると、偉大なステップが得られます。ソリューションウサギテンプレート

  • 型AMQPのメッセージを作成における相関キーを設定

    1. を試み

      は、いくつかの生成された値とテンプレートに設定correleationキーでヘッダ名を設定

    2. カスタムヘッダー名のAMQP発信ゲートウェイにheader-mapperを提供します。

    結果が

    ウサギのテンプレートは要求に設定された値を使用していない、しかしそれは、独自の値を生成し、カスタムヘッダーをマッピングすることができた/

  • +0

    なぜ、アプリケーションがcorrelationIdを生成する必要があるのか​​説明できますか?テンプレートは固有のものであることを確認する必要があるため、独自のテンプレートを生成し(ユーザーの値を復元します) correlationIdを使用して他の情報を受信者に伝える場合は、別のヘッダーを使用できませんか? –

    +0

    メッセージの実際の処理は、別のシステムでは休息をとることによって行われます。彼らはアウトバウンドゲートウェイで待っているスレッドへの応答を提供するPOSTコールを再度実行するので、テンプレートによって生成された相関IDに依存することはできません。はい、私はメッセージを相関させるために新しいヘッダーパラメータを使用しようとしています、問題は、フィールドの値がテンプレートによって使用されていない、それは応答を相関させるのは非常に困難な独自の値を生成します。 – user1568854

    +0

    "発信ゲートウェイで待機中のスレッドへの応答を提供するためのPOSTコール"、AMQPとの関係はどのようになっていますか?このような複雑な解決策のカスタム相関のために後で 'Aggregator'を使うことを考えてください。あなたの統合の流れを見て嬉しいですか? –

    答えて

    0

    にメッセージを返信する。このためnew feature JIRA Issueを開いてください。

    correlationIdが一意であることを確認することは、あなたの責任となります。

    テンプレートをサブクラス化してsendToRabbitを上書きすることで回避できます。そこにcorrelationIdを設定します。テンプレートのcorrelationId(理想的には別のヘッダーのメッセージにありますが、おそらくMap)を保存し、そのヘッダーもサーバーに返さなければなりません。

    protected void sendToRabbit(Channel channel, String exchange, String routingKey, boolean mandatory, 
         Message message) throws IOException { 
        // fix up properties 
        super.doSend(...); 
    } 
    

    また、インバウンド要求の適切なcorrelationIdを復元するには、onMessage()をオーバーライドする必要があります。

    +0

    ゲーリー、org.springframework.amqp.coreをビルドした場合。アウトバウンドゲートウェイで要求を処理する前にトランスフォーマ内のメッセージオブジェクト、AMQPフレームワークがUUIDジェネレータを使用して相関IDを取り込むことをサポートしていますか? – user1568854

    +0

    いいえ。最後の瞬間( 'sendToRabbit()')にメッセージを修正する必要があると私が言ったように。ユーザー提供の相関をサポートするためにテンプレートを変更する必要があります。それはやりにくいことではなく、次のリリースでそれをかなり簡単に入れることができます。 JIRAの問題が必要です。 –

    +0

    OK、すべてがhttps://jira.spring.io/browse/AMQP-779に設定されていますが、これはいつ実装され、リリースされると思いますか? – user1568854

    関連する問題