Входящий адаптер JDBC, получающий только одну запись, а не все - PullRequest
0 голосов
/ 06 декабря 2018

Я использую следующий входящий адаптер jdbc, который получает сообщение.Есть еще один активатор, который контролирует канал и вызывает метод.Однако проблема в том, что активатор службы получает только одно «событие», а не все.Но предполагается, что запрос "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-row = "0" в адаптер, но это не помогло.

1 Ответ

0 голосов
/ 06 декабря 2018

После дальнейшей отладки оказалось, что значение canProcessMessageList равно false при создании ServiceActivatingHandler.Таким образом, активатор службы получает только одно событие, а не список.

Вот так выглядел мой активатор:

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());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...