执行DML数据库操作并在单个事务中发送JMS消息

时间:2016-08-05 08:33:25

标签: java database spring transactions jms

请看一下这个例子:

@Component
public class TransactionTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Autowired
    private JmsTemplate jmsTemplate;

    @Transactional
    public void doTest() {
        jdbcTemplate.execute("INSERT INTO some_table VALUES ('some_value')");
        jmsTemplate.convertAndSend("some_queue", "some_value");
        ...
        throw new SomeException();
    }

    ...

}

为了保持一致性,我想原子地执行这两个操作(插入数据库行和发送JMS消息),这样当引发SomeException时,两个操作都将被回滚(数据库中不会有新行)并且没有新的JMS消息将在队列中。) 有没有机制来处理这个问题?我现在正在使用Spring Framework,PostgreSQL和Apache ActiveMQ。

0 个答案:

没有答案