使用 addListener 接口监听 ACM 配置的变更。
API 描述
addListener 接口可监听 ACM 上的配置,并实时感知配置变更。如果配置变更,则您可以用 getConfig 接口获取配置的最新值,并动态刷新本地缓存。
注册监听采用的是异步 Servlet 技术。注册监听的本质是将配置和配置值的 MD5 值与后台对比,如果 MD5 值不一致,则立即返回不一致的配置。如果 MD5 值一致,则等待 30 秒,且返回值为空。
请求类型
POST
请求 URL
/diamond-server/config.co
请求参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Probe-Modify-Request | String | 是 | 监听数据报文,格式为 dataId^2group^2contentMD5^2tenant^1 。
|
Header 参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Spas-AccessKey | String | 是 | 在 ACM 控制台上的命名空间详情对话框内可获取 AccessKey。 |
timeStamp | String | 是 | 以毫秒为单位的请求时间。 |
Spas-Signature | String | 是 | 使用 SecretKey 对“Tenant+TimeStamp”签名,注意加号+也是签名的一部分。(SpasSigner.sign(Tenant+Group+TimeStamp, secretKey) ),签名算法为 HmacSHA1。TimeStamp 签名的作用是防止重放攻击。该签名有效期为 60 秒。
|
Spas-SecurityToken | String | 否 | SecurityToken 需从 STS 临时凭证中获取。STS 临时凭证需从实例元数据 URL 中获取。详情请参考: |
返回参数
参数 | 类型 | 描述 |
---|---|---|
configInfo | String | 已变更配置的 Data ID、Group、命名空间信息,格式为 dataId^2group^2tenant^1
|
错误码
错误码 | 错误信息 | 描述 |
---|---|---|
400 | Bad Request | 客户端请求中的语法错误 |
403 | Forbidden | 没有权限 |
404 | Not Found | 客户端错误,未找到。 |
500 | Internal Server Error | 服务器内部错误 |
代码示例
-
请求示例(Shell)
#!/bin/bash ## config param dataId="com.alibaba.nacos.example.properties" group="DEFAULT_GROUP" namespace="04754ad1-4f67-4d67-b2bf-1f73a04a****" accessKey="8c5cbb849ae04682ad9f455a96aa****" secretKey="lwO5T7vfPJu27FclPa+/CyIG****" endpoint="acm.aliyun.com" ## config param end ## get serverIp from address server serverIp=`curl $endpoint:8080/diamond-server/diamond -s | awk '{a[NR]=$0}END{srand();i=int(rand()*NR+1);print a[i]}'` ## config sign timestamp=`echo $[$(date +%s%N)/1000000]` signStr=$namespace+$group+$timestamp signContent=`echo -n $signStr | openssl dgst -hmac $secretKey -sha1 -binary | base64` echo "Listening..." curl -X POST -H "Spas-AccessKey:"$accessKey -H "timeStamp:"$timestamp -H "Spas-Signature:"$signContent -H "longPullingTimeout:30000" "http://"$serverIp":8080/diamond-server/config.co" -d "Probe-Modify-Request=com.alibaba.nacos.example.properties%02DEFAULT_GROUP%02f4da32aa4289aa861974f949b639****%0204754ad1-4f67-4d67-b2bf-1f73a04a****%01" -v
说明 由于 Shell 脚本在 Windows 系统下编辑容易编码错误,建议在 Linux 系统里新建 Shell 脚本文件,再将此段代码复制到文件中。 -
返回示例(Shell)
# 如果配置有变更 com.alibaba.nacos.example.properties%02DEFAULT_GROUP%02f4da32aa4289aa861974f949b639****%0204754ad1-4f67-4d67-b2bf-1f73a04a****%01 # 如果配置无变更,则返回空串