Spring integration 使用jdbcPollingChannelAdapter执行多个查询

Spring integration 使用jdbcPollingChannelAdapter执行多个查询,spring-integration,Spring Integration,我是spring集成的新手,我有如下类似的要求,从多个表读取数据。我正在尝试实现jdbcpollingchanneladapter和jdbcMessageHandler,有人能帮我举一个使用javadsl的例子吗 读一下名单 为每个人提供一份部门清单 每个部门都有一份经理名单 对于每个经理,获取人员列表 B处理人员信息 C将信息写入csv 我正在使用MessageSource来处理DB查询,并使用映射器将结果值映射到POJO。如何将结果用作查找值以执行另一个查询 @EnableIntegrati

我是spring集成的新手,我有如下类似的要求,从多个表读取数据。我正在尝试实现jdbcpollingchanneladapter和jdbcMessageHandler,有人能帮我举一个使用javadsl的例子吗

读一下名单 为每个人提供一份部门清单 每个部门都有一份经理名单 对于每个经理,获取人员列表 B处理人员信息 C将信息写入csv

我正在使用MessageSource来处理DB查询,并使用映射器将结果值映射到POJO。如何将结果用作查找值以执行另一个查询

@EnableIntegration
public class IntegrationConfig {

    @Autowired
    DataSource dataSource;

    @Autowired
    PlatformTransactionManager transactionManager;

    @Bean
    public MessageChannel FamilyChannel() {
        return new DirectChannel();
    }

    @Bean
    @InboundChannelAdapter(value = "FamilyChannel", poller = @Poller(fixedDelay = "1000"))
    public MessageSource<Object> familyNumberMessageSource() {
        JdbcPollingChannelAdapter jdbcPollingChannelAdapter = new JdbcPollingChannelAdapter(dataSource, NCFBulkOrderQuery.SELECT_NCF_BULK_ORDER_DATE);
        return jdbcPollingChannelAdapter;
    }

    @Bean
    public MessageHandler familyNumberHandler(){
        JdbcMessageHandler jdbcMessageHandler = new JdbcMessageHandler(dataSource, NCFBulkOrderQuery.SELECT_NCF_BULK_ORDER_DATE);
        return jdbcMessageHandler;
    }

    @Bean
    public IntegrationFlow jdbFlow() {
        return IntegrationFlows
                .from("FamilyChannel")
                .handle(familyNumberMessageSource(), "receive")
                .get();

    }

}

@使能集成
公共类集成配置{
@自动连线
数据源数据源;
@自动连线
平台transactionManager transactionManager;
@豆子
公共消息频道家庭频道(){
返回新的DirectChannel();
}
@豆子
@InboundChannelAdapter(value=“FamilyChannel”,poller=@poller(fixedDelay=“1000”))
public MessageSource familyNumberMessageSource(){
JdbcPollingChannelAdapter JdbcPollingChannelAdapter=新的JdbcPollingChannelAdapter(数据源,NCFBulkOrderQuery。选择\u NCF\u BULK\u ORDER\u DATE);
返回jdbcPollingChannelAdapter;
}
@豆子
public MessageHandler familyNumberHandler(){
JdbcMessageHandler JdbcMessageHandler=新的JdbcMessageHandler(数据源,NCFBulkOrderQuery.SELECT_NCF_BULK_ORDER_DATE);
返回jdbcMessageHandler;
}
@豆子
公共集成流jdbFlow(){
返回积分流
.来自(“家庭频道”)
.handle(FamilyNumber消息源(),“接收”)
.get();
}
}

为什么不简单地构造一个包含连接等的SQL语句,在一个查询中获取所有内容?@GaryRussell,我认为编写一个查询就可以了,我会使用spring batch。我之所以选择spring集成,是因为spring batch中的每一步都是独立的,而且从我读到的内容来看,spring集成应该能够从多个表中读取,而且我希望更好地理解spring集成是如何工作的。您是否介意详细说明从多个表中读取意味着什么?不清楚为什么单个查询不被视为从多个表中读取…在SQL中执行此操作比在多个查询中更有效。如果您确实想这样做,可以使用一系列JDBC出站网关进行后续查询。@ArtemBilan从多个表中读取时,从一个表中输出的内容将成为下一个表的输入内容。我认为使用spring集成组件转换数据比使用一个查询更容易。