Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行DML数据库操作并在单个事务中发送JMS消息_Java_Database_Spring_Transactions_Jms - Fatal编程技术网

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

Java 执行DML数据库操作并在单个事务中发送JMS消息,java,database,spring,transactions,jms,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 s

请看一看这个例子:

@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框架、PostgreSQL和Apache ActiveMQ。

您将需要使用XA事务。此处提供信息,此处提供实现:。Spring doc对此也有一些看法: