前面讲过,平台内嵌的主数据系统使用rocketMQ来构建数据同步操作。业务端数据变动时,往消息队列发送变动消息即可。之所以采用这样的架构,核心原因是restful接口一般做成同步的,业务端需要等待主数据系统处理完同步时才能返回,这种架构不适合大批量数据传递。
rocketmq发送消息的数据结构是org.apache.rocketmq.common.message.Message,而主数据系统存储的数据五花八门,如何使用单一结构来表达千变万化的数据呢?依赖于精心设计的数据封账规则:
1、topic 主题。
使用这个字段来描述对象,如"employee"标识员工,"order"标识订单。
2、tags(标签)。
使用这个字段来描述动作,如"create" 标识创建,"update"标识更新
3、body(数据主体)
整个平台封账业务交换主体是各类dto类,Message这个字段是字节数据。
消费者、生产者,需要根据topic+tags来唯一确定dto类结构,然后在字节数组和dto类之间进行互转。
通过以上硬性规定来实现各类业务数据和Message结构体之间的数据互转