提问人:Pratik 提问时间:10/26/2023 最后编辑:Pratik 更新时间:10/26/2023 访问量:30
Spring Modulith 活动
Spring Modulith Events
问:
我正在使用注释@Transactional注释的方法中发布事件。 侦听器是带有@TransactionalEventListener注释的。
上面的设置导致同步(我们可以用@Async来改变它)事件处理,事件也通过弹簧模事件本身(我使用的是postgres)存储到数据库中。
但是,如果我使发布者成为非事务性(即删除@Transactional注释),则侦听器不会侦听和执行用于它的事件。我们也没有得到数据库条目,因为没有侦听器能够处理它。
我可以将侦听器更改为@EventListener以侦听非事务性事件,但在这种情况下,我失去了数据库事件持久性
我希望发布者可以自由决定是否要是事务性/非事务性。无论 Listener 如何,它都必须侦听并执行针对它的事件,并将该事件持久化到 DB 中。
请帮忙!
听者
@TransactionalEventListener
public void notificationEvent(ProductEvent event) {
System.out.println("Listener 1 Start");
System.out.println("Listener 1 End");
}
发行人
// @Transactional
public void publishEvent() {
System.out.println("Publisher Start");
ProductEvent productEvent = new ProductEvent("Product A", "THIS IS PRODUCT", 777);
applicationEventPublisher.publishEvent(productEvent);
System.out.println("Publisher End");
}
答: 暂无答案
评论