【问题标题】:How to consume an event after transaction is over using Quarkus Event Bus?事务结束后如何使用 Quarkus 事件总线消费事件?
【发布时间】:2022-07-16 17:28:05
【问题描述】:

我正在使用基于 eclipse vert.x 构建的 Quarkus 事件总线 我在 A 类中有一个事务方法,它调用 EventBus.send(),它触发 B 类中用 @ConsumeEvent 注释的方法

是否可以选择仅在事务完成后才使用事件?

我知道有一个选项可以使用 Java EE 事件来做到这一点 https://javaee.github.io/tutorial/cdi-adv005.html

是否可以使用 Quarkus 事件总线来做到这一点?

【问题讨论】:

    标签: quarkus vert.x event-bus


    【解决方案1】:

    据我所知,目前没有这样的选择。或许我们可以稍微修改一下事件发送代码:

    @Inject
    private Mutiny.SessionFactory sessionFactory;
    
    @Inject
    private EventBus eventBus;
    
    //@ReactiveTranactional
    public Uni<Void> create(final Fruit fruit) {
        return sessionFactory.withTransaction((session, tx) -> session.persist(fruit))
            .invoke(() -> eventBus.send("test_topic", "some test message")));
    }
    
     @ConsumeEvent("test_topic")
    public Uni<Void> listEntities(String testMessage) {
        log.info("Printing all entities via: " + testMessage);
        repository.findAll().stream().map(TestEntity::toString).forEach(log::info);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 2017-09-20
      • 2011-10-25
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多