使用消息服务(MNS)订阅阿里云物联网平台设备消息PHP示例参考

简介: 物联网平台服务端订阅支持将设备消息发送至消息服务(MNS),云端应用通过监听MNS队列,获取设备消息。本文主要演示使用最新版MNS PHP SDK消费订阅到MNS Queue中的消息。

概述

物联网平台服务端订阅支持将设备消息发送至消息服务(MNS),云端应用通过监听MNS队列,获取设备消息。本文主要演示使用最新版MNS PHP SDK消费订阅到MNS Queue中的消息。

操作步骤

1、服务端订阅配置

参考链接,链接中介绍了服务端MNS订阅的配置及使用Java SDK获取Queue中消息的方法。

2、MNS PHP SDK安装

composer.json

{
  "require": {
     "aliyun/aliyun-mns-php-sdk": ">=1.0.0"
  }
}

Install

composer install

3、Code Sample

<?php

require_once 'vendor/autoload.php';

use AliyunMNS\Client;
use AliyunMNS\Exception\MnsException;

class CreateQueueAndSendMessage
{
    private $accessId;
    private $accessKey;
    private $endPoint;
    private $client;
    private $queueName;

    public function __construct($accessId, $accessKey, $endPoint, $queueName)
    {
        $this->accessId = $accessId;
        $this->accessKey = $accessKey;
        $this->endPoint = $endPoint;
        $this->queueName = $queueName;
    }

    public function run()
    {
        $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey);

        $queue = $this->client->getQueueRef($this->queueName);

        $receiptHandle = NULL;
        try
        {
            // when receiving messages, it's always a good practice to set the waitSeconds to be 30.
            // it means to send one http-long-polling request which lasts 30 seconds at most.
            $res = $queue->receiveMessage(30);
            echo "ReceiveMessage Succeed! \n";
            
            // json 对象转数组
            $aTest = json_decode($res->getMessageBody(), true);
            // 获取  payLoad 的值
            $payLoad = $aTest["payload"];
            
            // base64 解码
            echo base64_decode($payLoad);
            $receiptHandle = $res->getReceiptHandle();
        }
        catch (MnsException $e)
        {
            echo "ReceiveMessage Failed: " . $e;
            return;
        }
        
        // 4. delete message
        try
        {
            $res = $queue->deleteMessage($receiptHandle);
            echo "<br/> DeleteMessage Succeed! \n";
        }
        catch (MnsException $e)
        {
            echo "DeleteMessage Failed: " . $e;
            return;
        }
    }
}

// ak,sk信息获取可以参考链接:https://yq.aliyun.com/articles/693979?spm=a2c4e.11155435.0.0.5ad926a2HiTVqH
// endPoint、queueName获取到MNS管理控制台:https://mns.console.aliyun.com/
$accessId = "********";
$accessKey = "********";
$endPoint = "http://********.mns.cn-shanghai.aliyuncs.com/";
$queueName = "aliyun-iot-********";

if (empty($accessId) || empty($accessKey) || empty($endPoint))
{
    echo "Must Provide AccessId/AccessKey/EndPoint to Run the Example. \n";
    return;
}

$instance = new CreateQueueAndSendMessage($accessId, $accessKey, $endPoint,$queueName);
$instance->run();

?>

4、项目结构

_

5、运行结果
_

参考链接

MNS PHP SDK

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
26天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
监控 安全 数据挖掘
物联网平台中如何快速检测设备异常
物联网平台中如何快速检测设备异常
27 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
147 5
|
1月前
|
XML JSON 网络协议
【开源视频联动物联网平台】设备接入
【开源视频联动物联网平台】设备接入
27 2
|
1月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
118 0
|
1月前
|
安全 搜索推荐 物联网
物联网设备的OTA基本原理
物联网设备的OTA基本原理
38 1
|
7月前
|
消息中间件 运维 JavaScript
使用物联网平台远程管理运维设备
本实验提供在阿里云物联网平台使用试用企业版实例,将设备接入物联网平台并收发消息。
149 0
|
3月前
|
供应链 NoSQL 物联网
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
物联网已成为面向未来的解决方案的关键组成部分,且其所蕴含的巨大经济价值潜力有待挖掘
1440 0
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
|
3月前
|
NoSQL 安全 物联网
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
作为医疗技术领域的全球领导者,通用电气医疗集团选择了 MongoDB由其管理旗下物联网设备,从部署(生命周期初期,即 BoL)到报废(生命周期结束,即 EoL)的整个生命周期
1825 3
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
|
4月前
|
数据采集 监控 物联网
物联网时代的电脑行为监控软件:代码实现与设备连接
随着物联网技术的飞速发展,电脑行为监控软件在日常生活和商业领域中变得愈发重要。这种软件通过对电脑用户行为的监测,提供了有益的数据,有助于改善用户体验、增强安全性,甚至在一些场景中实现自动化操作。本文将探讨物联网时代的电脑行为监控软件的代码实现与设备连接,并重点介绍监控到的数据如何自动提交到网站。
268 0

相关产品

  • 物联网平台