Простой способ получить данные из IoT Hub в C#
Я пытаюсь использовать код из учебника MS https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-getstarted и это
internal class Program
{
private static string connectionString = "HostName=...=";
private static string d2cEndpoint = "messages/events";
private static EventHubClient eventHubClient;
private static void Main(string[] args)
{
Console.WriteLine("Receive messages\n");
eventHubClient = EventHubClient.
CreateFromConnectionString(
connectionString, d2cEndpoint);
var d2cPartitions = eventHubClient.
GetRuntimeInformation().PartitionIds;
foreach (string partition in d2cPartitions)
{
ReceiveMessagesFromDeviceAsync(partition);
}
Console.ReadLine();
}
private async static Task ReceiveMessagesFromDeviceAsync(
string partition)
{
var eventHubReceiver = eventHubClient.
GetDefaultConsumerGroup().
CreateReceiver(partition, DateTime.UtcNow);
while (true)
{
EventData eventData = await eventHubReceiver.
ReceiveAsync();
if (eventData == null) continue;
string data = Encoding.UTF8.GetString(
eventData.GetBytes());
Console.WriteLine(string.Format(
"Message received. Partition: {0} Data: '{1}'",
partition, data));
}
}
}
получить данные из IoT Hub, но все же что-то не так. Можно ли получить эти данные простым способом?
1 ответ
Используя версию VS2017>=15.3.1, вы можете создать проект функций Azure для функции EventHubTrigger без какого-либо однострочного кода. Следующий фрагмент кода шаблона показывает эту функцию:
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.WebJobs.ServiceBus;
namespace FunctionApp4
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([EventHubTrigger("myEventHubName", Connection = "myIoTHub")]string myEventHubMessage, TraceWriter log)
{
log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
}
}
}
и файл local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...",
"myIoTHub": "Endpoint=sb://....servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=..."
}
}
Следующий фрагмент экрана показывает вывод консоли локальной функции Azure: