gpt4 book ai didi

spring-data-jpa - JPA 入站 channel 适配器的示例 Spring 集成 DSL

转载 作者:行者123 更新时间:2023-12-04 07:02:05 25 4
gpt4 key购买 nike

我找不到一个有用的示例来轮询 JPA 源以获取入站数据。我知道如何在 XML 中执行此操作,但无法弄清楚如何在 DSL 中执行此操作。

简而言之,我想做的是定期轮询 JPA 存储库以获取记录,然后将记录放入将执行常规过滤/转换/执行的流中。

亲切的问候

大卫·史密斯

最佳答案

你是对的:在 Spring Integration Java DSL 中还没有 JPA 组件支持。欢迎提出JIRA (JavaDSL 组件),我们将处理此需求。欢迎调用contribute还有!

同时,我可以帮助您弄清楚如何在没有高级 API 的情况下做到这一点。

<int-jpa:inbound-channel-adapter>基于 JpaPollingChannelAdapterJpaExecutor对象(正是我们将用于 DSL API 的对象)。您只需要配置 @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,其他一切都将由框架照常完成。

更新

How to provide auto-startup= property when creating JpaPollingChannelAdapter programmatically? Also, is it possible to get this bean and invoke .start(), .stop() using control-bus?

看,Gary 的回答。 Lifecycle控制是Endpoint的责任在我们的例子中是 SourcePollingChannelAdapter .因此,您应该指定第二个 Lambda 参数,配置 .autoStartup().id()那里能够注入(inject) SourcePollingChannelAdapter为你的 JpaPollingChannelAdapter并根据您的目的使用它。那id真的可以用control-busstart()/stop()在运行时。

是的,我同意JpaPollingChannelAdapter是该类的不幸名称,因为它实际上是一个 MessageSource实现。

关于spring-data-jpa - JPA 入站 channel 适配器的示例 Spring 集成 DSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30799031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com