1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // tag::main[]
- == 消息队列、通知规范
- * 队列名称:`<ServeiceId>.<消息模型>.<队列名称>`
- ** 消息模型分为点对点(`queue`)和发布订阅模式(`topic`)
- ** 推荐由消费者创建队列(若生成者创建,无消费者时,会导致消息堆积)
- * 生产者连接时需指定消息是否持久化
- * 连接MQ需要指定 `ClientId` ,格式如下: `<ServeiceId>.<IP>.<UUID>`
- * 必须实现重连机制(一般SDK都会实现)
- * 统一消息包装结构体,使用 `Json` 格式
- === 消息格式约束
- 为保证可以统一收发消息的代码,便于管理,故对消息做以下格式要求
- * id
- ** 消息唯一标识,需要业务内唯一,全局唯一更好
- * type
- ** 消息类别(业务上的)
- * from
- ** 消息来源
- * to
- ** 消息去向
- * data
- ** 消息内容(JSON)
- *** 推荐data对应数据库表带版本号
- * traceId
- ** 便于链路追踪
- * spanId
- ** 便于链路追踪
- 如用户注册通知,队列名称:`user.topic.userRegister`
- ----
- {
- "id": "aef3338b-8674-41f4-a3ae-83f3197a05c3", 消息id
- "type": "user.register.email",
- "from": "user",
- "version": "1.2",
- "data": "{...}"
- }
- ----
- [TIP]
- ====
- 建议消息内容中添加版本号 `version` 字段(用于多版本版本共存的兼容)
- ====
- // end::main[]
|