1

サービスアクティベーターを使用する必要があります。開発時や展開時ではなく、実行時に入力チャネルと出力チャネルにバインドしたい。したがって、XML ベースのサービス アクティベーターのインスタンス化を使用することはできません。プログラムの実行中に交換とキューを宣言しています。したがって、プログラムの実行中に service-activator を動的にインスタンス化する必要があります。

次のことを達成したいのですが、XML ではなくコードを使用します。

<service-activator input-channel="exampleChannel" output-channel="replyChannel"
                   ref="somePojo" method="someMethod"/>

上記の XML スニペットに相当するコードは何ですか? Spring-Integration には ServiceActivator クラスがないようです。

ありがとう。

4

2 に答える 2

3

あなたのためのクラスがあります - ServiceActivatingHandler。しかし、実行時にそれを行うのはそれほど簡単ではありません。もちろん、そのクラスのコンストラクターに POJO とそのメソッドを提供するだけです。さらに重要なオプションはoutputChannel. そして、ここで何らかの方法でBeanFactoryインフラストラクチャを提供する必要があります: beanFactorybeanClassLoaderプロパティなどafterPropertiesSet()。そして、主な目標は、そのハンドラーを にサブスクライブexampleChannelすることです。そのチャネルのタイプによって異なります。それが直接のものまたはエグゼキュータである場合、ビルドするだけで十分EventDrivenConsumerです。しかし、それがキューにある場合は、ビルドする必要がありますPollingConsumer

これは、タスクを達成するための単なるドラフトであり、複雑なソリューションのために構築するものがあるかもしれません.

于 2013-11-13T10:28:24.007 に答える