我正在尝试阅读设备发送的事件。我正在使用azure npm lib来阅读我认为正确的内容。
好的,首先,在我的Azure ioT Hub帐户下,该服务有一个标签调用Messaging。有一种叫做“Event Hub兼容名称”和“Event Hub-compativle endpoint”的东西。我是否必须创建一个名为“Event Hub兼容名称”的新事件中心或者什么?我有点困惑:D 如果不是什么是连接字符串和主题等等?
以下是代码的编写方式......
var azure = require('azure');
var serviceBusService = azure.createServiceBusService("Endpoint=XXXXXXXXXX.servicebus.windows.net/");
var isWaiting = false;
function waitForMessages(){
console.log("Checking Queue...");
isWaiting = true;
serviceBusService.receiveQueueMessage("messages","events",function (error, receivedMessage){
console.log(error);
console.log(receivedMessage);
isWaiting = false;
});
}
// Start messages listener
setInterval(function () {
if(!isWaiting){
waitForMessages();
}
}, 200);
答案 0 :(得分:3)
Event Hub-compatible name
不意味着你必须创建一个同名的事件中心。
IOT Hub提供与Event Hub API向后兼容的端点。我认为实际的实现有点复杂,但您可以将IOT Hub视为继承或至少是Event Hub的实现。将此Event Hub兼容名称与任何Event Hub SDK或代码示例一起用作连接字符串的一部分。
用于解释 Event Hub-compatible name
&的概念。 Event Hub-compatible endpoint
,您可以参考官方文档Azure IoT Hub developer guide的How to read from Event Hubs-compatible endpoints
部分。您可以使用Azure Service Bus SDK for .NET
或Event Hubs - Event Processor Host
在C#中读取IoT Hub中的事件。
否则,NodeJS有两个Azure IoT SDKs使用 connection string
:Azure IoT Service SDK
(API Reference)& Azure IoT Device SDK
(API Reference)。
connection string
,您可以在Shared Access Policies
标签All settings
的一个政策中找到它,请参阅下面的图片来自文档{ {3}}
Tutorial: Get started with Azure IoT Hub
根据您从IoT Hub读取事件的需求,您可以按照这些示例使用Azure IoT SDK for NodeJS进行编码。
Azure IoT Service SDK
列出您在IoT Hub中注册的deviceIds,请参阅示例。Azure IoT Device SDK
来监控来自IoT Hub的事件,请参阅示例https://github.com/Azure/azure-iot-sdks/blob/master/node/service/samples/registry_sample.js。希望它有所帮助。如有任何疑虑,请随时告诉我。
答案 1 :(得分:2)
您可以使用Event Hubs SDK for Node.js查看您的设备发送到IoT Hub的事件/消息:
https://www.npmjs.com/package/azure-event-hubs
事件中心SDK的客户端对象可以接受IoT Hub连接字符串,因此您无需使用Event Hubs连接字符串。
如果您只是尝试调试设备并想要验证它实际上是否正在发送消息,则可以使用随Azure IoT Hub SDK提供的名为iothub-explorer的工具:
https://github.com/Azure/azure-iot-sdks/tree/master/tools/iothub-explorer
还有一些关于上一个答案的说明:Service SDK允许向设备发送消息,并读取设备发送的“反馈”消息,用于了解设备是接受还是拒绝命令消息但不包含任何数据。它无法读取设备发送的数据事件。
答案 2 :(得分:1)
连接到IoT Hub以接收数据:
var protocol = 'amqps';
var eventHubHost = '{your event hub-compatible namespace}';
var sasName = 'iothubowner';
var sasKey = '{your iot hub key}';
var eventHubName = '{your event hub-compatible name}';
var numPartitions = 2;
协议
var protocol = 'amqps';
与Event Hub兼容的端点:sb://abcdefnamespace.servicebus.windows.net/ 但没有sb://和.service windows.net /
就像那样:abcdefnamespace
var eventHubHost = '{your event hub-compatible namespace}';
它很好
var sasName = 'iothubowner';
主键,如下所示:83wSUdsSdl6iFM4huqiLGFPVI27J2AlAkdCCNvQ ==
var sasKey = '{your iot hub key}';
这样的名字:iothub-ehub-testsss-12922-ds333s var eventHubName =' {您的事件中心兼容名称}';
它很好
var numPartitions = 2;
答案 3 :(得分:0)
每个Iot Hub实例都带有一个与Event Hubs兼容的内置终结点。在Azure门户中看到的与事件中心兼容的终结点是指向事件中心实例的连接字符串,从中可以读取发送到Iot Hub实例的所有消息。
您可以使用此连接字符串从EventHubConsumerClient
库实例化@azure/event-hubs
类并读取消息。
如果发生故障转移,则可以说该支持的内置端点将发生变化。因此,您将必须获取新的连接字符串并重新启动该过程。另一种选择是使用azure-iot-samples-node repo中的示例代码,通过传入Iot Hub连接字符串来获取Event Hub兼容连接字符串,然后使用@azure/event-hubs
库读取消息。在Read from the built-in endpoint