int-jdbc: входящему каналу-адаптеру нужен int: poller для работы, оба имеют max-row и max-messages-per-poll соответственно.
a) Почему для входящего канала-адаптера нужен poller,почему он не может иметь встроенный поллер по умолчанию?
b) Что, если max-row и max-messages-per-poll имеют разные значения?
c) Почему poller (osieSourcePollingChannelAdapter)продолжает опрашивать (или пытаться), когда набор сообщений опрашивается и обрабатывается?
<int-jdbc:inbound-channel-adapter
query="${poller.deliveryLocator.dnd.get}"
max-rows="${poller.deliveryLocator.dnd.maxRow}"
row-mapper="deliveryLocatorPollerRowMapper" data-source="dataSource"
channel="deliveryLocatorChannel">
<int:poller fixed-rate="500" time-unit="MILLISECONDS" max-messages-per-poll="${poller.deliveryLocator.dnd.maxRow}">
<int:transactional />
</int:poller>
</int-jdbc:inbound-channel-adapter>
Для вопроса "c" я установил регистратор уровня отладки для org.springframework и заблокировал программу, установив точку останова на устройстве отображения строк.
Я заметил, что опросор продолжает опрашиватьБД (эти отладочные операторы повторялись), однако, он не выбирал никаких записей, поскольку адаптер входящего канала был заблокирован.
2019-06-10 15:16:29 [task-scheduler-1] DEBUG
o.s.orm.jpa.JpaTransactionManager - Creating new transaction with name
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.orm.jpa.JpaTransactionManager - Opened new EntityManager [SessionImpl(1259297282<open>)] for JPA transaction
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.orm.jpa.JpaTransactionManager - Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@621f9b19]
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL query
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL statement
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.i.e.SourcePollingChannelAdapter - Received no Message during the poll, returning 'false'
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.orm.jpa.JpaTransactionManager - Initiating transaction commit
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.orm.jpa.JpaTransactionManager - Committing JPA transaction on EntityManager [SessionImpl(1259297282<open>)]
2019-06-10 15:16:29 [task-scheduler-1] DEBUG o.s.orm.jpa.JpaTransactionManager - Closing JPA EntityManager [SessionImpl(1259297282<open>)] after transaction