在 SignalR 应用程序中从 Azure EventHub 轮询消息的替代方法

Alternative to polling messages from Azure EventHub in SignalR application

我有一个 Azure EventHub,它偶尔会从各种设备获取数据。我想处理数据并通过 SignalR 将它们发送到客户端应用程序。但是,似乎获取数据的唯一可能性是在 SignalR 服务器应用程序中有一个无限循环,它将定期轮询来自 EventHub (http://blogs.msdn.com/b/musings_on_alm_and_software_development_processes/archive/2014/09/03/azure-event-hubs-queues-and-workers.aspx) 的数据。

我发现的唯一优化是使用后退轮询 (http://www.developerfusion.com/article/120619/advanced-scenarios-with-windows-azure-queues/)。现在我想知道 - 有没有更好的方法来完成这项工作? SignalR 和 EventHubs 都在那里,以启用 PUSH 通信模型。他们是否无法建立双向通信通道,允许他们根据事件发送和接收消息?

你确定eventhub是你需要的结构吗? Azure Queue 和 Azure Topics 都会在 C# 中为您提供 "OnEvent" 信号,这样您就可以避免轮询。 EventHub 在流中提供消息,更适合用于大量的 IoT 信号和流分析。

当然,如果您的架构需要可视化数据流,您仍然可以在收到 queue/topic 消息后将消息转发到 eventhub,否则,我会强烈考虑 Azure Topics 或 Azure 队列

https://azure.microsoft.com/en-us/documentation/articles/service-bus-queues-topics-subscriptions/