设计原则
- 字段和标签保持一致层级关系,从二级标签开始,一级标签不出现在字段中
- 如果除了一级标签没有其他层级的标签的,发关心的全量数据
- 不满足2的,发关心的差量数据,如果有新旧值的话,字段名定义为
old_原字段
,new_原字段
这样的形式,没有旧值的,直接发字段名 - ID类唯一标识字段放当层数据的最外层,比如订单 ID 放 body 最外层,sku_id 放 sku 层的最外层
订单例子
- 新建订单
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['create_order'],
key='PL1231013',
body={
{
"id" : "PL4443451",
"refund_amount" : 0,
"is_aggregation" : 0,
"station_id" : "T21728",
"remark" : null,
"freight" : 0.0,
"real_pay" : 0,
"salemenu_ids" : [
"S11522"
],
"status" : 1,
"date_time" : ISODate("2019-01-18T10:25:41.726Z"),
"pay_status" : 1,
"total_price" : 600.0,
"total_pay" : 600.0,
"_lock" : "no",
"close_time" : null,
"expire_time" : ISODate("2019-01-18T10:30:41.726Z"),
"time_config_id" : "ST1960",
"details" : [
{
"is_price_timing" : false,
"version" : 6,
"real_quantity" : 3.0,
"accept_quantity" : 3.0,
"sale_unit_name" : "公斤",
"spu_remark" : "",
"tax_rate" : 0,
"id" : "D6357858",
"total_item_price" : 600.0,
"sync_origin" : "D6357858",
"origins" : [],
"purchase_quantity" : 3.0,
"material" : [
{
"std_unit_name" : "公斤",
"real_std_count" : 3.0,
"spu_id" : "C1649978",
"std_sale_price" : 200.0,
"accept_std_count" : 3.0,
"sale_ratio" : 1.0
}
],
"real_item_price" : 600.0,
"attrition_rate" : 0,
"sort_station_ids" : [],
"salemenu_id" : "S11522",
"total_item_pay" : 600.0,
"search_text" : [
"QINGWOSUN(MALONG)",
"QWS(ML)",
"青莴笋(马龙)",
null,
"QINGWOSUN(MALONG)",
"QWS(ML)",
"青莴笋(马龙)"
],
"weighting_quantity" : 0,
"real_is_weight" : true,
"quantity" : 3.0,
"name" : "青莴笋(马龙)",
"sale_price" : 200.0
}
],
"district_code" : "530300",
"settle_way" : 1,
"real_price" : 600.0,
"create_time" : ISODate("2019-01-18T10:25:41.726Z"),
"client" : 1,
"customer" : {
"uid" : "160753",
"supply_station_id" : "T21728",
"receive_end_time" : "2019-01-17 23:30",
"receiver_name" : "食堂人员",
"address" : "云南爱希望农业科技开发有限公司",
"address_id" : "150319",
"receiver_phone" : "15887855534",
"receive_begin_time" : "2019-01-17 08:00",
"extender" : "{\"order_pay_method\": 2, \"resname\": \"\\u516c\\u53f8\\u98df\\u5802\\u81ea\\u7528\"}",
"address_sign_id" : "3030400700000"
},
"paid_amount" : 0,
"out_order_id" : "",
"source_order_ids" : [],
"freeze" : 0,
"modify_time" : ISODate("2019-01-18T10:25:41.726Z"),
"distribute_time" : ISODate("2019-01-17T08:00:00.000Z")
}
},
serial='13afa14asd235',
)
修改订单的具体操作
order_srv.create(...)
mq_srv.commit([id])
- 修改下单量
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['edit_sku_quantity', 'add_skus', 'delete_skus'],
key='PL1231013',
body={
'id': 'PL1231013',
'edit_skus': [
'edit_sku_quantity': [{
'id': 'D1344134',
'old_quantity': 1.0,
'new_quantity': 2.0
}, {
'id': 'D1344135',
'old_quantity': 1.0,
'new_quantity': 2.0
}],
'add_skus': [{
'id': 'D1344136',
'quantity': 2.0
}],
'delete_skus': [{
'id': 'D1344137',
}, {
'id': 'D1344138'
}]
]
},
serial='13afa14asd235'
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
- 修改订单状态
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['edit_status'],
key='PL1231013',
body={
'id': 'PL1231013',
'edit_status': {
'old_status': 5,
'new_status': 15
}
},
serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
- 修改订单收货时间
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['edit_receive_time'],
key='PL1231013',
body={
'_id': 'PL1231013',
'edit_receive_time': {
'old_receive_begin_time': '2018-12-30 00:00:00',
'old_receive_end_time': '2018-12-30 10:00:00,
'new_receive_begin_time': '2018-12-31 00:00:00',
'new_receive_end_time': '2018-12-31 10:00:00'
}
},
serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
- 删除订单
发送订单消息
id = mq_srv.begin(
topic='order'
tags=['delete_order'],
key='PL1231013',
body={
'id': 'PL1231013'
},
serial='13afa14asd235',
)
修改订单的具体操作
order_srv.delete(...)
mq_srv.commit([id])
格式不需要定那么死
有没有一种rabbitmq的过滤机制
vhost