インバウンド データの JPA ソースをポーリングするための有用な例が見つかりません。XML でこれを行う方法は知っていますが、DSL で行う方法がわかりません。
要するに、私がやりたいことは、定期的にレコードの JPA リポジトリをポーリングし、通常のフィルタリング/変換/実行を行うフローにレコードを入れることです。
敬具
デビッド・スミス
インバウンド データの JPA ソースをポーリングするための有用な例が見つかりません。XML でこれを行う方法は知っていますが、DSL で行う方法がわかりません。
要するに、私がやりたいことは、定期的にレコードの JPA リポジトリをポーリングし、通常のフィルタリング/変換/実行を行うフローにレコードを入れることです。
敬具
デビッド・スミス
その通りです。Spring Integration Java DSL にはまだ JPA コンポーネントのサポートがありません。この問題について気軽にJIRA (コンポーネント)を上げてJavaDSL
ください。この要求に対応します。こちらも気軽に投稿してください!
それまでの間、高レベルの API を使用せずにそれを行う方法を理解するのを手伝うことができます。
はおよびオブジェクト<int-jpa:inbound-channel-adapter>
に基づいています (まさにそれらを DSL API に使用します)。次のように構成して使用するだけです。JpaPollingChannelAdapter
JpaExecutor
@Bean
JpaExecutor
@Bean
public JpaExecutor jpaExecutor(EntityManagerFactory entityManagerFactory) {
JpaExecutor jpaExecutor = new JpaExecutor(entityManagerFactory);
jpaExecutor.setJpaQuery("from Foo");
....
return jpaExecutor;
}
@Bean
public IntegrationFlow jpaFlow(JpaExecutor jpaExecutor) {
return IntegrationFlows.from(new JpaPollingChannelAdapter(jpaExecutor))
.split()
.transform()
....
}
それ以外はすべて、既存の DSL コンポーネント API の通常どおり、フレームワークによって行われます。
アップデート
プログラムでJpaPollingChannelAdapterを作成するときにauto-startup =プロパティを提供する方法は? また、この Bean を取得し、control-bus を使用して .start()、.stop() を呼び出すことは可能ですか?
ゲイリーの答えを見てください。コントロールは、私たちの場合はのLifecycle
責任です。そのため、その 2 番目の Lambda 引数を指定し、そこに を設定して、目的に合わせて を注入し、操作できるようにする必要があります。それは実際に実行時に使用できます。Endpoint
SourcePollingChannelAdapter
.autoStartup()
.id()
SourcePollingChannelAdapter
JpaPollingChannelAdapter
id
control-bus
start()/stop()
はい、それは本当に実装JpaPollingChannelAdapter
であるため、そのクラスの残念な名前に同意します。MessageSource
JpaPollingChannelAdapter
を として配線して@Bean
使用する
IntegrationFlows.from(jpaMessageSource(),
c -> c.poller(Pollers.fixedDelay(1000)))
.transform(...)
...
構成オプションについては、 DSL リファレンスを参照してください。
これは一番上にあります (メッセージ ソースが異なります)。