事务轮询器不使用mssqlerver

时间:2013-05-07 10:56:25

标签: sql-server spring-integration isolation-level poller

我有一个事务轮询器(spring 3.1.2和spring-integration 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-server(ms-sqlserver,它使用READ COMMITTED SNAPSHOT作为隔离级别,如果这很重要的话),异常的重新传递不起作用。任何提示为什么会这样?

编辑:

我测试了TRACE日志记录,但无法找到可疑的日志消息,最后我得到了它的工作。我声明了一个单独的dataSource(与普通数据库相同的配置)和transactionManager org.springframework.jdbc.datasource.DataSourceTransactionManager而不是我的普通org.springframework.orm.jpa.JpaTransactionManager。

0 个答案:

没有答案