JDBC 入站适配器只检索一条记录而不是所有记录
JDBC Inbound Adapter retrieving only one record rather than all
我正在使用以下 jdbc 检索消息的入站适配器。还有另一个激活器监视通道并调用方法。然而问题是,服务激活器只得到一个 "Event" 而不是全部。但是,查询应该 "select *"
<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());
}
}
我正在使用以下 jdbc 检索消息的入站适配器。还有另一个激活器监视通道并调用方法。然而问题是,服务激活器只得到一个 "Event" 而不是全部。但是,查询应该 "select *"
<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());
}
}