簡體   English   中英

通過RabbitMQ(AMQP協議)從雲向設備IOT集線器發送消息時面臨問題

[英]Facing issue with sending message from cloud to device iot hub via rabbitmq(amqp protocol)

我想使用amqp協議將雲中的消息發送到設備物聯網中心,為此我正在使用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中的管道斷開或連接已關閉

請幫幫我。

您無法使用Rabbitmq從IotHub發送“雲到設備”消息。

“您通過面向服務的端點(/ messages / devicebound)發送雲到設備的消息。然后,設備通過特定於設備的端點(/ devices / {deviceId} / messages / devicebound)接收消息

要將每個雲到設備的消息定位到單個設備,IoT中心將to屬性設置為/ devices / {deviceId} / messages / devicebound

在這里閱讀更多。

您可以\\應該利用Azure IoT中心服務SDK-請參閱此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM