Транзакционный опросчик не работает с mssqlerver
У меня есть транзакционный опросник (Spring 3.1.2 и Spring-интеграции 2.2.3), чтобы гарантировать, что сообщения будут доставлены, если транзакция откатывается по исключению
<int:outbound-channel-adapter id="obca" ref="notificationHandler"
method="handle" channel="notificationChannel" >
<int:poller max-messages-per-poll="100" fixed-delay="6000"
time-unit="MILLISECONDS">
<int:transactional isolation="DEFAULT" />
</int:poller>
</int:outbound-channel-adapter>
это прекрасно работает, когда модульное тестирование с базой данных H2, сообщение доставляется до тех пор, пока метод вызывает исключение
@Transactional
public void handle(Message<MyPayload> message)
но когда я использую sql-сервер, который мы используем в производственной среде (ms-sqlserver, который использует READ COMMITTED SNAPSHOT в качестве уровня изоляции, если это важно), повторная доставка по исключению не работает. какие-либо намеки, почему это может быть?
РЕДАКТИРОВАТЬ:
Я проверил протоколирование TRACE, но не смог найти подозрительные сообщения в журнале, наконец-то я его заработал. я объявил отдельный источник данных (тот же конфиг, что и в обычной базе данных) и actionManager org.springframework.jdbc.datasource.DataSourceTransactionManager вместо моего обычного org.springframework.orm.jpa.JpaTransactionManager.