主要观点总结
本文介绍了Spring Event框架在业务系统中的实际应用,包括使用Spring Event时需要注意的关键问题和最佳实践。文章还讨论了Spring Event与MQ的区别,以及各自适用的场景。
关键观点总结
关键观点1: Spring Event框架简介
Spring Event框架基于事件的发布订阅机制,允许开发者自定义事件并在某些业务场景中发布,Spring会广播这些事件给相应的监听者。
关键观点2: 使用Spring Event的前提条件
为了确保Spring Event的可靠使用,业务系统必须首先实现优雅的关闭服务。此外,服务启动阶段也可能出现Spring Event事件丢失的问题,因此需要注意服务启动时机。
关键观点3: Spring Event适用场景
Spring Event适用于最终一致性的业务场景,如订单提单成功后的资源释放等。对于强一致性的业务场景,如提单阶段库存扣减和订单提单成功的完全一致性,Spring Event可能会有问题。
关键观点4: 提高Spring Event的可靠性
使用SpringEvent时需要有额外的可靠性保证,如提供重试能力和保证订阅者逻辑的幂等性。重试可以通过使用@Retryable注解或依赖Kafka消费组的重试机制来实现。
关键观点5: Spring Event与MQ的比较
Spring Event和MQ都属于订阅发布模式的应用,但MQ更适合应用之间的解耦、隔离和事件通知,而Spring Event更适合应用内的订阅发布。
文章预览
Boot+Cloud项目学习: macrozheng.com 作者:五阳 来源:juejin.cn/post/7313387525819973671 今天我们重点聊聊使用 Spring Event 最为关键的几个问题。这是我司线上生产环境实际踩坑后,总结的极为宝贵的经验! Spring Event框架实现了基于事件的发布订阅机制。开发者可以自定义事件,在某些业务场景发布事件,Spring 会将该事件广播给监听该事件的监听者。监听者可以实现Spring 的监听者接口 ApplicationListener 注册自己,也可以使用 EventListener 注解注册自己。 这是Spring Event 的简短介绍,网上有大量的入门级教程,我在此不过多赘述,进入正文! 1. 为什么说:业务系统一定要先实现优雅关闭服务,才能使用 Spring Event? Spring 广播消息时,Spring会在 ApplicationContext 中查找所有的监听者,即需要 getBean 获取 bean 实例。然而 Spring 有个限制———— ApplicationContext 关闭期间
………………………………