0

Spring Integrationで送信ゲートウェイのサービス実装を指定するには? アウトバウンド ゲートウェイが双方向通信用であり、一般に外部システムとの統合を提供するために使用され、サービス アクティベータがローカル サービス コール用である場合、カスタム トランスポート/外部システム用のアウトバウンド ゲートウェイを実装する方法は? ゲートウェイの名前空間では、受信ゲートウェイのサービス インターフェイスを設定できますが、送信ゲートウェイのサービス実装についてはどうでしょうか。

<int:gateway id="cafeService"
         service-interface="org.cafeteria.Cafe"
         default-request-channel="requestChannel"
         default-reply-channel="replyChannel"/>
4

1 に答える 1

3

最も簡単なメカニズムは、サービス インターフェイスを POJO として実装し、

<service-activator input-channel="..." output-channel="..." 
      ref="myPojo" method="process" />

どこ

public class MyPoJo {

    public Bar process(Foo foo) {

        ...

    }

}

より正式に行いたい場合は、拡張できますAbstractReplyProducingMessageHandler。そしてそれを消費者エンドポイントにラップしますが、フレームワークの依存関係がないため、POJO ルートが最も好まれます。

編集

Spring Tool Suite (Eclipse ベース) を使用する場合、テンプレートを使用して本格的なゲートウェイを構築するのに役立つスターター プロジェクトがあります。名前空間パーサーとすべてのスターター クラスが含まれています ( New | Spring | Spring Project | Integration ...)。テンプレートはここにホストされています。それらは少し古くなっています (たとえば、SI の更新が必要であり、docbook はもう使用していません - 少なくともマスターでは asciidoc を使用しています) が、それには長い道のりが必要です。名前空間のヘルプについては、標準のパーサーを参照することもできます。

ゲートウェイが広くアピールできると思われる場合は、拡張機能に貢献することを検討してください。

EDIT2

あなたのコメントから...

私が理解している限り、アウトバウンドゲートウェイは外部システムとの統合を提供するために使用され、サービスアクティベーターはローカルサービス呼び出し用です

これは一般的には当てはまりますが、a を介して外部サービスを呼び出すことを妨げるものは何もありません。これ<service-activator/>は個人的な好みの問題であり、組織内で使用するために公開する場合を除き、正式なアダプターを作成する本当の理由はありません。 /またはより正式な方法でコミュニティに貢献します。

于 2015-03-26T18:27:11.587 に答える