阿里云物联网平台AMQP服务端订阅NodeJS Demo-阿里云开发者社区

开发者社区> 阿里云物联网> 正文

阿里云物联网平台AMQP服务端订阅NodeJS Demo

简介: 服务端可以直接订阅产品下所有类型的消息:设备上报消息、设备状态变化通知、网关发现子设备上报、设备生命周期变更、设备拓扑关系变更。配置服务端订阅后,物联网平台会将产品下所有设备的已订阅类型的消息转发至您的服务端。本文主要演示如果使用NodeJs SDK进行AMQP服务端订阅
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

(福利推荐:你还在高价请网络公司做企业网站?现在阿里云建站来啦,仅需500元/年快速搭建企业官网,立即抢购>>>:9i0i.cn/aliyun

Step By Step

配置服务端订阅

1、创建消费组
图片.png

2、创建订阅
图片.png

参数获取

3、ConsumerGroupId获取位置
图片.png

4、AccessKeyId、AccessKeySecret及Uid获取

参考地址:阿里云常见参数获取位置

5、iotInstanceId 独享实例需要指定,公共实例配置为空即可。
图片.png

6、ClientId可以任意指定,例如设置为:tarodemo。

7、Host: ${uid}.iot-amqp.${regionId}.aliyuncs.com

例如:184*.iot-amqp.cn-shanghai.aliyuncs.com

SDK 安装

npm install rhea

图片.png

Code Sample
const container = require('rhea');
const crypto = require('crypto');

//建立连接。
var connection = container.connect({
    //接入域名,请参见AMQP客户端接入说明文档。
    'host': '18482************.iot-amqp.cn-shanghai.aliyuncs.com',
    'port': 5671,
    'transport':'tls',
    'reconnect':true,
    'idle_time_out':60000,
    //userName组装方法,请参见AMQP客户端接入说明文档。其中的iotInstanceId,购买的实例请填写实例ID,公共实例请填空字符串""。
    //'username':'${YourClientId}|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=${YourAccessKeyId},iotInstanceId=${YourIotInstanceId},consumerGroupId=${YourConsumerGroupId}|', 
    'username':'tarodemo|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=LTAIOZZgYXPsMbDA,iotInstanceId=,consumerGroupId=R45CIUGUE3LJie1uaFjI000100|', 
    //计算签名,password组装方法,请参见AMQP客户端接入说明文档。
    //'password': hmacSha1('${YourAccessKeySecret}', 'authId=${YourAccessKeyId}&timestamp=1573489088171'),
    'password': hmacSha1('v7C***********', 'authId=**********&timestamp=1573489088171'),
});

//创建Receiver-Link。
var receiver = connection.open_receiver();

//接收云端推送消息的回调函数。
container.on('message', function (context) {
    var msg = context.message;
    var messageId = msg.message_id;
    var topic = msg.application_properties.topic;
    var content = Buffer.from(msg.body.content).toString();
    
    // 输出内容
    console.log(content);

    //发送ack,注意不要在回调函数有耗时逻辑。
    context.delivery.accept();
});

//计算password签名。
function hmacSha1(key, context) {
    return Buffer.from(crypto.createHmac('sha1', key).update(context).digest())
        .toString('base64');
}
测试效果

图片.png

参考链接

Node.js SDK接入示例
阿里云常见参数获取位置

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云物联网
使用钉钉扫一扫加入圈子
+ 订阅

致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。

官方博客
物联网相关产品售前咨询
开发者交流群


http://www.vxiaotou.com