我有一个连接到Azure事件中心的IoT设备。我试图使该设备与azure数据块通信,并将azure事件中心作为中间件放置在它们之间。问题在于,在我们能够通过“ .NET Framework”发送消息之后,它从未在“ python”命令行中接收到的消息中显示(我们应该这样做,因为我们分别为每个部分工作)
我遵循了.NET framework as sender和python as receiver准则,但这不起作用。
我看到事件中心流实例下的请求和消息图中有峰值,但它从未在接收器中显示
==================================更新============== =====================
刚刚删除了eventhub并重新创建,似乎可以正常工作。
但是,以长字符串形式接收消息,如下所示:
Received: 662a2a44-4414-4cb5-a9e9-a08d12a417e0
Received: b68ef8f8-305f-4726-84e4-f35b76de30c5
Received: e94dfb73-972c-47b4-baef-1ab41b06be28
Received: 8eda384d-f79d-4cdf-9db3-fe5c2156553b
Received: d154283f-a8c2-4a4c-a7d5-e8d8129b568d
Received: 3e3e190e-f883-416c-a5be-b8cd8547d152
Received: e218c63b-85b3-4f4f-8f04-cb5ffc6d8921
Received: 0adec5ad-e351-4151-ba56-01093e0f383d
Received 8 messages in 0.05406975746154785 seconds
当我阅读以下格式的消息时会发生这种情况:
print("Received: {}".format(event_data.body_as_str(encoding='UTF-8')))
我只是尝试一下,我可以为您解决问题。这是您需要检查的内容。
1。在您的发件人(在c#中)中,您应确保要发送的消息正确无误。如下所示:
static void SendingRandomMessages()
{
var eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, eventHubName);
int i = 0;
while (true)
{
try
{
// make sure the message is correct.
var message = i+":"+Guid.NewGuid().ToString()+":"+DateTime.Now;
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, message);
var myeventdata = new EventData(Encoding.UTF8.GetBytes(message));
eventHubClient.Send(myeventdata);
i++;
//eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(message)));
}
catch (Exception exception)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("{0} > Exception: {1}", DateTime.Now, exception.Message);
Console.ResetColor();
}
Thread.Sleep(2000);
}
}
2。接收器(在python中)似乎有些延迟,因此我执行python接收器约3次,并且可以看到预期的输出。屏幕截图如下: