消息队列、通知规范

  • 队列名称:<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": "{...}"
}

建议消息内容中添加版本号 version 字段(用于多版本版本共存的兼容)