消息推送说明

一、推送方式

阿里巴巴开放平台向接入商推送实时的业务变更消息,保持数据的一致性以及同步,满足接入商业务需求,避免轮询。推送的数据消息,将以http post或者websocket的方式向该推送地址发起调用,把数据推送给接入商。接入商如果通过SDK方式接收消息,在成功收到后,SDK会自动发送回执,如果自己接收消息,则需要自行发送回执。接收失败时,消息中心会自动重发N次(一般3次)。如果还是失败,则将消息保存入库,接收方可通过补偿API来拉取接收失败的消息。失败消息一般保存7天,请及时拉走,否则消息会被丢弃。

二、推送消息格式

消息数据以Json格式发送,消息提供统一的模板;不同业务的消息,仅通过消息类型来区分,具体的业务消息内容,参考各个业务消息说明。

1、消息模板字段说明

属性
类型
说明
备注
msgId
Number
消息ID,消息唯一性标识
如210239
gmtBorn
Number
消息推送时间
1970.1.1到现在的毫秒数
data
String
具体推送的业务消息数据,json格式,字段说明,参考各个业务消息说明
如{"key1":"value1"}
userInfo
String
memberId
1234567
type
String
消息类型,每个业务消息都唯一对应一个类型,参考业务消息的类型定义
ORDER_PAY
extraInfo
String
扩展字段,暂未启用
如{"key1":"value1"}
消息模板json示例 
 {    "msgId": "12345",    "gmtBorn": "1392711616045",    "data": {        "key1": "value1"    },    "userInfo": "memeberId",    "type": "messageType" }

2、业务消息字段示例说明

示例:订单状态变化消息

消息业务说明: 订单状态发生变化的消息推送
消息类型: ORDER_STATUS_CHANGE
业务消息内容:
属性
类型
说明
备注
orderID
Number
订单产品ID

lastStatus
String
上一次订单状态

currentStatus
String
当前订单状态

msgSendTime
Date
消息发送时间
消息发送的时间
userInfo
String
用户登录id
卖家memberId
消息内容示例
    message = {    "data": {        "currentStatus": "FINISH",        "lastStatus": "FUND_PROCESSING",        "orderChangeTime": "2015-06-24 19:33:26",        "orderId": "60020931694988"    },    "userInfo": "cn1803950",    "type": " ORDER_STATUS_CHANGE ", }

三、推送通道说明

1、httpCallback

通道说明:
http消息回调通道,isv提供一个http服务,配置url地址;开放平台采用短连接的方式调用http服务,推送消息
推送协议说明:
开放平台推送中心发送post请求,包含两个参数,编码格式统一为UTF-8,统一按照key/value格式推送,参数说明:
参数键值
参数值
说明
备注
message
消息的json串
对接方获取这个参数的值,然后通过json的反序列化,就得到了消息模型
如210239
_aop_signature
签名
针对消息的一个签名,可防篡改
1970.1.1到现在的毫秒数

消息签名说明

仅对消息内容进行签名计算,签名算法同开放平台的算法,内容是key+value(即message+json串)
消息签名算法示例
# key=message # value= message对应的json串 String[] datas = new String[1]; datas[0] = key + value; byte[] signature = SecurityUtil.hmacSha1(datas, toBytes(appSecretKey)); return encodeHexStr(signature); 

http 推送POST请求示例:

POST /pushMessage HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Connection: close Accept: */* User-Agent: NING/1.0 Content-Length: 248 message={"data":{"key":"value"},"gmtBorn":1527556000,"msgId":70299002,"type":"PRODUCT_PRODUCT_EXPIRE","userInfo":"CBU_MemberId"}&_aop_signature=65F2AA13AE9C9C9DFE8682EFB90B32F37CB01BE1

推送成功说明

isv收到消息之后,只要设置返回的response http status code =200就认为是消息消费成功; 如果http status code!=200,就认为是消息消费失败,推送中心后续会重试,默认重试3次

2、websocket

通道说明:
websocket协议消息推送,isv提供一个websocket客户端(可集成SDK),主动连接到开放平台,并保持长连接;开放平台通过长连接推送消息,客户端消费完成后,需要主动确认消息消费完成(SDK可自动解决)
推送协议说明:
websocket协议类型
含义说明
备注
CONNECT
客户端发起建连请求
客户端发起的长连接请求,http协议升级为websocket
CONNECT_ACK
服务端建连成功返回
服务端websocket握手成功返回,双向确认链接
HEARTBEAT
客户端心跳
每间隔30s发送一次心跳包
SERVER_PUSH
服务端消息推送(最关心的)
客户端需要自定义业务逻辑,来处理推送的消息
CONFIRM
客户端消息消费成功确认
消息消费成功标志,服务端依据此信息来判断
CLOSE
链接关闭

SYSTEM
服务端异常

由于websocket协议复杂,强烈推荐使用SDK来集成,减少开发成本,不用关心连接维护,心跳等复杂问题,只需要处理消息的逻辑;后续会慢慢补充协议完整信息

四、消息补偿API

针对推送失败的消息,我们提供补偿API机制,让isv能够主动来查询失败消息列表,做一些补偿的逻辑。
提供两种方式:

1、游标式获取失败的消息列表:

游标式获取失败的消息列表,获取的消息默认自动会做消费成功的确认。所以下次以相同条件调用获取的是剩下的数据,直至返回数据为空。
游标式获取失败的消息列表API:
https://www.cnsecc.com/doc_29486412.html

2、查询式获取失败的消息列表:

查询式获取发送的消息列表,获取的消息不会自动确认消费成功的状态,需要调用方手动调用确认api来确认。需注意,确认后,会影响分页返回的数据
查询式获取失败的消息列表API:
https://www.cnsecc.com/doc_29486420.html
失败消息批量确认Api:
https://www.cnsecc.com/doc_29486404.html


推荐

  • QQ空间

  • 新浪微博

  • 人人网

  • 豆瓣

商联网 - AI智能客服集群系统(7x24小时)

7f1309b5587f4951bae0f50bca8f9fa3.gif

招商:18939208700      微信:cnsecc      在线客服 > >


收起

取消
  • 首页
  • 云建站
  • 云应用
  • 云推广
  • 供应链