notify.adoc 1.3 KB

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