我无法找到轮询入站数据的JPA源的有用示例。我知道如何在XML中做到这一点,但不知道如何在DSL中做到这一点。示例JPA入站通道适配器的弹簧集成DSL
简而言之,我想要做的是定期轮询JPA存储库中的记录,然后将记录放入将执行常规过滤/转换/执行的流中。
亲切的问候
大卫·史密斯
我无法找到轮询入站数据的JPA源的有用示例。我知道如何在XML中做到这一点,但不知道如何在DSL中做到这一点。示例JPA入站通道适配器的弹簧集成DSL
简而言之,我想要做的是定期轮询JPA存储库中的记录,然后将记录放入将执行常规过滤/转换/执行的流中。
亲切的问候
大卫·史密斯
线了JpaPollingChannelAdapter
为@Bean
和使用
IntegrationFlows.from(jpaMessageSource(),
c -> c.poller(Pollers.fixedDelay(1000)))
.transform(...)
...
配置选项见DSL Reference。
这是一个靠近顶部(具有不同的消息源)。
您是对的:Spring Integration Java DSL中尚无JPA组件支持。请随时就此事提出JIRA(JavaDSL
组件),我们会关注此需求。也欢迎contribute!
同时,我可以帮助您找出如何在没有高级API的情况下做到这一点。我们将用于DSL API的JpaPollingChannelAdapter
和JpaExecutor
对象。你只是必须为JpaExecutor
配置@Bean
和使用它像这样:
@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。
UPDATE
编程方式创建JpaPollingChannelAdapter时如何提供自动启动=财产?另外,是否有可能获得这个bean并使用控制总线调用.start(),.stop()?
查看,加里的答案。在我们的案例中,Lifecycle
控制是Endpoint
的责任,它是SourcePollingChannelAdapter
。因此,您应该指定第二个Lambda参数,将.autoStartup()
和.id()
配置为可以为您的JpaPollingChannelAdapter
注入SourcePollingChannelAdapter
,并根据您的目的使用它。 id
确实可以在运行时从control-bus
到start()/stop()
使用。
是的,我同意JpaPollingChannelAdapter
是该班的不幸名字,因为它实际上是一个MessageSource
实施。
在JIRA中引发了新的功能请求。 https://jira.spring.io/browse/INTEXT-20 –
如何在编程创建'JpaPollingChannelAdapter'时提供'auto-startup ='属性?另外,是否可以使用控制总线获取这个bean并调用'.start()','.stop()'? – kisileno
请在我的答案中查看UPDATE。 –