php - 面临通过rabbitmq(amqp协议)从云向设备iot hub发送消息的问题
问题描述
我想使用 amqp 协议将消息从云发送到设备 iot 集线器,为此我使用的是 rabbitmq 消息代理和 php 中的参考。我在 localhost 上尝试了以下代码:
//send.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('HUBNAME.azure-devices.net', 5671
, 'HUBNAME.azure-devices.net/DEVICENAME/?api-version=2018-06-30'
, 'SharedAccessSignature sr=HUBNAME.azure-devices.net
&sig=XXXX&se=XXXX&skn=iothubowner');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
$json = '{"id":123, "value":"xyz"}';
$msg = new AMQPMessage($json);
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$connection->close();
当我运行此send.php
文件时,我收到错误:
致命错误:未捕获的 PhpAmqpLib\Exception\AMQPConnectionClosedException:C:\xampp\htdocs\amqp\vendor\php-amqplib\php-amqplib\PhpAmqpLib\Wire\IO\StreamIO.php:222 中的管道损坏或关闭连接
请帮帮我。
解决方案
推荐阅读
- c# - klocwork 错误 - 在第 151 行检查为 null 的引用“SchoolDataSet”将在第 153 行取消引用
- ruby-on-rails - 我应该如何在 Rails 引擎中实现 ActiveStorage
- javascript - 如果未输入表单中的字段,php会显示一个警告框
- c# - SvcTraceViewer 未以红色显示异常
- cron - ' * ' 和 ' 有什么区别?'?
- python-3.x - 数据帧条目中一列与其他列的比较以提高数据质量
- android-studio - 修复警告:jks 密钥库使用专有格式。建议迁移到pkcs12
- ruby-on-rails - 多类别模型与具有 STI 的单类别模型?- 导轨
- google-cloud-platform - 仅使用 JSON API 检索 Google Cloud 对象的元数据?
- svg - SVG - 带有背景颜色和圆角边框的文本