TechRoad&wk_Architecture_Event

目的:程序或系统中事件相关


1. Spring 

ApplicationCtext : 通过使用ApplicationContext 作为代理发布和接收事件的能力。

注意事项:

使用事件作为快速执行的反应逻辑,而不是作为主要应用逻辑的一部分。

某个应用程序中,某些组件需要通知某些事件.

1. 编码明确地通知每个组件,或使用JMS消息传递技术。编码依次通知每个组件的缺点是,将这些组件与发布者耦合起来。大多数情况下耦合无必要

假设场景:应用程序中缓存产品详细信息以避免访问数据库,

而另一个组件允许修改产品详细信息并将其保存到数据库中。

为避免缓存失效,更新组件需要明确通知缓存信息已更改。因此导致更新组件耦合到一个与其业务无关的组件

更好的解决方案是让更新组件在每次修改产品的详细信息时发布一个事件,然后让感兴趣的组件(例如缓存)监听事件

有利于保持组件解耦,并可以在需要时移除缓存或添加另一个对此事件感兴趣的监听器。

此情况下没有必要使用JMS,因为在缓存中时产品条目失效的过程时很快的且不是关键业务,Spring事件基础结构的使用仅会增加很少的开销。

缓存中产品的失效是由于对产品详细信息更新而产生的,该失效过程会很快执行,且不是应用程序主要功能的一部分。

对于那些长时间运行且构成主要业务逻辑的一部分的流程,使用JMS或类似消息传递系统RabbitMQ。

好处是更适合长时间运行的流程,如必要,将包含业务信息的消息的JMS驱动处理放在单独的机器上。


 

 

posted @ 2020-12-20 14:57  君子之行  阅读(4)  评论(0)    收藏  举报