一个可扩展的 MQ 消息设计


#软件架构与思考#


在一个队列中发送消息,可以通过为消息增加类型,从而保证良好的扩展性。

设计思路

假设消息格式为 json,有两个字段:

  • type : 消息类型,一般为数字
  • content : 消息内容,string 类型,内部是json 格式数据。

要点:

  • type 相同的消息,content 中的 json 数据结构是相同的;
  • type 不同的消息,content 中的 json 数据结构可以不相同。

业务代码中根据 type 做相应的处理即可。

消息示例

type 1 是某充值业务的充值成功消息:

{
    "type": 1,
    "content": "{\"user_id\": 1231391391, \"biz_id\":\"123\",  \"amount\": 100}"
}

type 2 是用户登录操作的消息:

{
    "type": 2,
    "content": "{\"user_id\": 1231391391, \"login_time\":\"2020-12-12 19:00:00\"}"
}

( 本文完 )