概述
接口平台通过消息服务来通知对接系统数据的变化,避免轮询,这些消息,本质上是业务事件。
例如,对于物流这个业务场景下的交货单,在单据创建、委托下达、车辆进厂、车辆离厂、客户签收等事件产生时,给相关系统推送一条消息,简要通知事件信息,如单据的新增、修改、作废,只需要消息中携带单号和类型即可。
虽然消息服务从技术角度上有能力推送更多的业务数据,但我们从规划设计上,只赋予消息通知轻量级的通知职责,即仅告知数据变化,具体发生了什么变化,相关系统如需要,则可以调用API接口进行数据查询(通常新增和修改需要调用查询,而作废则无需再查询数据),这样设计可以保证关键业务逻辑在API接口中实现,而不是在API和消息服务中重复出现相同或相似的业务逻辑处理。
初步方案
按照上面的设计思路,事件只需要单据标识和状态(或称之为事件描述)即可,将事件作为消息内容,并附加一个消息主题,在生产者、消息服务中心和消费者之间传递。
事件本身很简单,只定义一个包括标识和状态在内的基类即可,暂不考虑根据具体业务事件进行扩展,否则当业务扩展时,服务端增加新的业务事件,需要客户端也同步增加新的业务事件,反而增加耦合度,不如直接用基类来做反序列化和解析来得方便。
/**
* 事件基类
* @author wqliu
* @date 2021-10-5
**/