nodejs AMQP服务端订阅的实现

步骤 :  


1)环境安装 node.js (下载安装包,下一步.....就行了)

这个是我的版本

IT-C1MPD4X5G943:webpack11 ganjun$ node -v

v14.15.1

IT-C1MPD4X5G943:webpack11 ganjun$


2)安装nodejs的包管理器 cnpm

这个是我的版本

IT-C1MPD4X5G943:webpack11 ganjun$ cnpm -v

cnpm@6.1.1 (/usr/local/lib/node_modules/cnpm/lib/parse_argv.js)

npm@6.14.9 (/usr/local/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)

node@14.15.1 (/usr/local/bin/node)

npminstall@3.28.0 (/usr/local/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)

prefix=/usr/local

darwin x64 20.2.0

registry=https://r.npm.taobao.org


3)参考官网代码

https://help.aliyun.com/document_detail/143599.html?spm=a2c4g.11186623.6.656.5dd67cd8K9IMzE


4)代码以及依赖

在package.json中添加以下依赖。

"dependencies": {
    "rhea": "^1.0.12"
 }


代码

constcontainer=require('rhea');
constcrypto=require('crypto');
//创建Connection。
varconnection=container.connect({
//接入域名,请参见AMQP客户端接入说明文档。
'host':'11112560*******.iot-amqp.cn-shanghai.aliyuncs.com',
'port':5671,
'transport':'tls',
'reconnect':true,
'idle_time_out':60000,
//userName组装方法,请参见AMQP客户端接入说明文档。其中的iotInstanceId,企业版实例请填写实例ID,公共实例直接删除${YourIotInstanceId}。
'username':'4444444444|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=LTAIVne33sFywOG8,iotInstanceId=,consumerGroupId=DEFAULT_GROUP|', 
//计算签名,password组装方法,请参见AMQP客户端接入说明文档。
'password':hmacSha1('9ViU8**********', 'authId=LTAIVne33sFywOG8&timestamp=1573489088171'),
});
//创建Receiver Link。
varreceiver=connection.open_receiver();
//接收云端推送消息的回调函数。
container.on('message', function(context) {
varmsg=context.message;
varmessageId=msg.message_id;
vartopic=msg.application_properties.topic;
varcontent=Buffer.from(msg.body.content).toString();
// 输出内容。
console.log(content);
//发送ACK,注意不要在回调函数有耗时逻辑。
context.delivery.accept();
});
//计算password签名。
functionhmacSha1(key, context) {
returnBuffer.from(crypto.createHmac('sha1', key).update(context).digest())
.toString('base64');
}





上一篇:使用云端api测试 ,固件上传的过程


下一篇:web时间范围组件和业务逻辑的交互