事件总线(EventBus),设计初衷是解耦系统模块,将系统中的各类业务操作抽象为事件模型,我们把产生事件的部分称之为事件的发送者(Publisher),消费事件的部分称之为订阅者(Subcriber)。
EventBus简介
EventBus是一个publisher/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。
作为一个消息总线主要有三个组成部分:
- 事件(Event):可以是任意类型的对象。通过事件的发布者将事件进行传递。
- 事件订阅者(Subscriber):接收特定的事件。
- 事件发布者(Publisher):用于通知 Subscriber 有事件发生。可以在任意线程任 意位置发送事件。
DDD领域事件架构简析
- 领域事件是领域驱动设计(Domain Driven Design)中的一个概念,它用来表示领域中发生的事件,目的是捕获我们所建模的领域中所发生过的各类事件
- 领域事件忽略不相关的领域活动,明确业务需求,使得业务开发者只关注和跟踪有业务需要的事件或希望被通知的事件。
- 结合领域事件和EventBus,目前GM2的EventBus架构模型
快速入门
pom依赖
<!-- <gm2-common.version>1.0.2-SNAPSHOT</gm2-common.version> -->
<dependency>
<groupId>com.dzg.gm2.common</groupId>
<artifactId>gm2-ddd-event</artifactId>
<version>${gm2-common.version}</version>
</dependency>
bean配置
@Configuration
@EnableEvent
public class EventConfiguration {
@Bean("asyncEventBus")
public EventBus asyncEventBus() {
ThreadPoolExecutor threadPoolExecu