jms事务模型

nkkqxpd9  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(144)

考虑下面的粗略示例,其中spring按照标准spring引导设置管理事务。
使用springbootstarterdatajpa提供的默认事务管理器。
在这个事务性工作单元中,数据库和jms操作都会发生。

@Autowired JmsMessageOperations jmsMessageOperations;
@Autowired EntityManager entityManager;

@Transactional
public void doWork() {
    entityManager.persist(new Foo(1));
    entityManager.flush();

    jmsMessageOperations.convertAndSend(BAR_QUEUE, new Bar(1));

    entityManager.persist(new Foo(2));
    entityManager.flush();

    BazResponse bazResponse = 
        jmsMessageOperations.convertSendAndReceive(
            BAZ_QUEUE, 
            new Baz(1), 
            BazResponse.class);

    // here    
}

如果在,这些jms消息(两个出站和一个入站)会发生什么 // here 答:
引发回滚异常,
发生某事(或什么都不发生),导致提交事务。
我特别感兴趣的是 convertSendAndReceive(...) 是受管理的,因为在提交发送之前显然无法接收响应—是的发送 Baz 在另一个事务中处理以发送 Bar ?
虽然我希望消息传递实现不会产生巨大的影响,但我主要对activemq感兴趣。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题