如何解决我如何用 Project Reactor 替换 Spring Events
假设我有一个巨大的 Spring 应用程序。在其中的一部分中,执行了某种业务逻辑。我还需要执行一些不应影响主进程的额外操作(例如,重新计算一些指标并将其保存到数据库中)。为此,我使用了 Spring 事件机制(当然是在异步模式下)。
@Service
public class MyService {
@Autowired
private ApplicationEventPublisher eventPublisher;
public void doSomeUsefulStuffWithEntity(Long entityId) {
//some operation here
eventPublisher.publishEvent(new EntityHasChangedEvent(Long entityId));
}
}
@Component
public class MyEventListener {
@Async
@EventListener
public void onEntityEvent(EntityHasChangedEvent event) {
//do some stuff here
}
}
很直截了当,不是吗。但是有一种观点认为 Spring Events 主要是为了 Bean Lifecycle 的目的,而不是为了业务任务。因此这个问题。什么足以满足我的需求?我应该使用由 Project Reactor 代表的发布者-订阅者机制吗?如果是这样,它应该怎么看? Spring Events 为我提供了不同领域模块之间的弱内聚 - 我不知道如何使用 Fluxes 实现相同的弱内聚。
解决方法
Project Reactor 是一个旨在在 JVM 上构建非阻塞应用程序的库。这样做主要是出于性能原因,请参阅 Project Reactor 文档或深入阅读 State of Loom。
Publish–subscribe pattern 与非阻塞应用程序无关,它是一种适用于事件广播的消息传递模式。
因为这两件事没有可比性,所以你不能真正用另一个来代替。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。