event-center
所属分类:数据库系统
开发工具:Java
文件大小:0KB
下载次数:0
上传日期:2018-08-01 15:59:59
上 传 者:
sh-1993
说明: 事件中心,提供DDD中的事件的实现框架,基于dubbo框架+leveldb存储构建高可用的事件通讯组件
(Event center, providing the implementation framework of events in DDD, and building highly available event communication components based on dubbo framework+leveldb storage)
文件列表:
LICENSE (1063, 2018-08-01)
ec-api/ (0, 2018-08-01)
ec-api/pom.xml (1260, 2018-08-01)
ec-api/src/ (0, 2018-08-01)
ec-api/src/main/ (0, 2018-08-01)
ec-api/src/main/java/ (0, 2018-08-01)
ec-api/src/main/java/eventcenter/ (0, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ (0, 2018-08-01)
ec-api/src/main/java/eventcenter/api/AbstractEventCenter.java (8303, 2018-08-01)
ec-api/src/main/java/eventcenter/api/AbstractEventRegister.java (425, 2018-08-01)
ec-api/src/main/java/eventcenter/api/CommonEventListenerConfig.java (754, 2018-08-01)
ec-api/src/main/java/eventcenter/api/CommonEventRegister.java (447, 2018-08-01)
ec-api/src/main/java/eventcenter/api/CommonEventSource.java (2329, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ConfigContext.java (539, 2018-08-01)
ec-api/src/main/java/eventcenter/api/DefaultDelayEventListener.java (1061, 2018-08-01)
ec-api/src/main/java/eventcenter/api/DelayableEventListener.java (251, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventCenter.java (1163, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventCenterConfig.java (11425, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventConsumedStatus.java (385, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventContainer.java (834, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventFilter.java (198, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventFireFilter.java (951, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventInfo.java (1916, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventListener.java (254, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventListenerTask.java (5408, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventRegister.java (514, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventService.java (525, 2018-08-01)
ec-api/src/main/java/eventcenter/api/EventSourceBase.java (2766, 2018-08-01)
ec-api/src/main/java/eventcenter/api/InvalidAnnotationException.java (273, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerCache.java (5414, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerExecuted.java (389, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerFilter.java (640, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerFilterAdapter.java (328, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerReceipt.java (3515, 2018-08-01)
ec-api/src/main/java/eventcenter/api/ListenerScan.java (419, 2018-08-01)
ec-api/src/main/java/eventcenter/api/Remotable.java (209, 2018-08-01)
ec-api/src/main/java/eventcenter/api/SyncListenerMoreThanOneException.java (481, 2018-08-01)
ec-api/src/main/java/eventcenter/api/Version.java (196, 2018-08-01)
ec-api/src/main/java/eventcenter/api/aggregator/ (0, 2018-08-01)
... ...
# 事件中心(Event Center)
事件中心提供领域驱动开发中的领域事件的实现框架,它是基于dubbo框架+leveldb存储构建高可用的事件通讯组件。
## 架构
![架构](https://github.com/KingHimma/event-center/blob/master/resources/images/architecture.png)
## 功能
* 简单清晰的接口调用
* 基于leveldb实现事件队列,保障事件不丢失、不重复消费
* 基于dubbo实现分布式的事件,并结合leveldb支持离线推送功能,保障分布式事件的数据一致性和服务治理特性
* 系统接入方便,支持Spring注解和手动编写触发事件
* 高扩展性,可自定义队列容器、事件订阅机制、事件传输机制等等
* 支持异步事件、同步事件、分布式事件、并发聚合事件和调度事件
* 支持监控日志,可写入到elastic search或者其他的日志系统中进行监控
## 开始第一个事件中心的程序
事件中心在使用之前需要构造两个组件,第一个是触发事件的实例:EventCenter;第二个是接收事件的监听器:EventListener。
我们先实现一个简单的监听器:
```java
/**
* 这里需要添加一个注解,用于描述这个监听器所监听的事件,可以支持多个事件同时监听
*/
@ListenerBind("example.saidHello")
public class SimpleEventListener implements EventListener {
@Override
public void onObserved(CommonEventSource source) {
// source中传递了事件触发时所带的参数,这里可以原封不动的按照顺序取出
System.out.println("Hello " + source.getArg(0, String.class));
}
}
```
好了,接着可以构造一个最基本的事件中心实例:
```java
public class ExampleMain {
public static void main(String[] args) throws Exception {
DefaultEventCenter eventCenter = new EventCenterBuilder()
// 这里需要将监听器注入进来,后续章节会介绍如何自动注入监听器
.addEventListener(new SimpleEventListener())
.build();
// 启动事件中心容器
eventCenter.startup();
// 接着开始触发事件,打一个招呼
eventCenter.fireEvent("Main", "example.saidHello", "World");
// 跟着观察下控制台的输出,这里暂停500ms
Thread.sleep(500);
// 最后关闭掉容器
eventCenter.shutdown();
}
}
```
运行时,"Hello World"会迅速的打到控制台中,这里的fireEvent是异步执行,不会产生阻塞。事件中心也可以阻塞的触发事件,等待所有监听器都成功执行完成之后,才会释放。但是我不建议大家使用这种方式使用事件,这样破坏了事件本身在系统框架层中的意义。
## 教程
* 可参考源码中的ec-examples模块,内部有很多demo
* [教程文档](https://github.com/KingHimma/event-center/blob/master/https://jueming.gitbook.io/eventcenter)(还在持续更新中)
## 联系我们
* Email: usiboy@163.com
* QQ: 281408062
近期下载者:
相关文件:
收藏者: