核心概念

WeEvent是一个基于区块链实现的事件中间件服务,面向用户提供事件发布订阅Publish/Subscribe功能。发布到WeEvent上的事件永久存储,不可篡改,支持事后跟踪和审计。 生产者Producer通过WeEvent代理服务发布事件,事件内容会被记录到区块链如FISCO-BCOS上,消费者ConsumerWeEvent订阅事件。订阅成功后,只要生产者发布事件,消费者都会及时得到通知。

../_images/WeventTopView.png

WeEvent提供两种部署方案:一种是直接将Jar包集成进业务进程,集成过程参见集成weevent-core.jar;一种是以独立服务部署,业务通过接入这个代理服务访问各种功能,部署过程参见WeEvent快速安装。两种方式各有优劣,可以自由选择。WeEvent独立服务有多种接入方式,生产者Producer和消费者Consumer可以是后台服务、前端网页、IoT设备、甚至单片机。

事件(Event)

事件Event可以简单理解成业务层面的一个消息。一般是终端用户或设备触发。

通常一个事件包含四个部分的信息,事件ID、内容、可选的自定义属性以及关联的主题。

事件内容对WeEvent是透明的,业务可以存放任何数据,例如字符型的JsonXML,或者二进制的Protocol Buffer等。在Java中映射为字节数组byte[],完整的Java映射类参见WeEvent.java

主题(Topic)

业务上一般把数据结构相同,属于同类型的事件归属于同一主题Topic

每个主题Topic逻辑上都有彼此独立的队列。主题之间是完全隔离的,发布、存储、通知都不会互相影响。

发布事件(Publish)

生产者Producer往某个主题发布事件,WeEvent会将事件永久存储在区块链FISCO-BCOS上,不可篡改,支持事后审核。

事件发布成功后WeEvent会返回一个事件IDEventID ,事件ID代表该事件且具有唯一性。

订阅事件(Subscribe)

消费者Consumer订阅某个主题后,当有生产者往该主题发布事件,消费者会及时收到事件通知。

订阅成功时WeEvent会返回一个的订阅IDSubscriptionID,代表完成一次订阅,订阅ID具有唯一性。

除了实时订阅最新的事件,WeEvent也支持从最开始或者从某个历史事件EventID之后启动订阅。

取消订阅(Unsubscribe)

消费者通过订阅IDSubscriptionID 取消一个订阅后,不会再收到该主题的事件通知。