spring-integration - JDBC 入站适配器仅检索一条记录而不是所有记录

标签 spring-integration spring-integration-dsl

我正在使用以下 jdbc 入站适配器来检索消息。还有另一个激活器监视 channel 并调用方法。然而问题是,服务激活器只获得一个“事件”,而不是全部。但是,查询应该“选择*”

<int-jdbc:inbound-channel-adapter id="jdbcInboundAdapter"
                                 channel="queueChannel" data-source="datasource"
                                 auto-startup="true"
                                 query="SELECT * FROM Event" row-mapper="eventResultMapper"
                                 update-per-row="false">

    <int:poller fixed-rate="5000">
    </int:poller>
</int-jdbc:inbound-channel-adapter>

<int:service-activator input-channel="queueChannel" ref="eventActivator" method="doSomething">
</int:service-activator>

我还尝试在适配器中添加 max-rows="0",但这没有帮助。

最佳答案

经过进一步调试,发现在创建ServiceActivatingHandler时canProcessMessageList的值为false。因此,服务激活器仅接收一个事件而不是列表。

这就是我的激活器的样子:

public void doSomething(Event event)
{
  System.out.println("Processing event: " + event.getName());
}

使用以下签名更新了激活器并且它起作用了:

public void doSomething(Collection<Event> events){
    System.out.println("Processing event: " + events.size());
    for (Event event: events){
        System.out.print("***** " + event.getName());
    }
}

关于spring-integration - JDBC 入站适配器仅检索一条记录而不是所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640855/

相关文章:

redis - spring 集成 redis 轮询器与事务

java - 堆栈跟踪警告 "No bean factory"

java - 使用Spring Integration for Inbound Adapter时如何检查SFTP连接是否成功

java - 使用关联消息进行与旧服务器的 TcpOutboundGateway 连接的正确方法是什么

sockets - TCP套接字服务器使用spring集成同时处理多个客户端连接

tcp - Spring Integration TCP 强制从两侧重新连接

java - Spring Integration动态流线程问题

spring-integration - 为 Http.outboundGateway spring dsl 配置错误处理和重试

java - Spring DSL 处理流程后?

cron - JDBC Spring 与注释集成