C#-将多个blob保存到azure帐户
我有一个简单的项目,它使用M2mqtt客户机库连接到HiveMQ代理。当消息到达时,将触发事件,事实上,我每秒最多可以接收100条消息,程序每秒只能处理20条消息C#-将多个blob保存到azure帐户,c#,azure,azure-storage-blobs,mqtt,C#,Azure,Azure Storage Blobs,Mqtt,我有一个简单的项目,它使用M2mqtt客户机库连接到HiveMQ代理。当消息到达时,将触发事件,事实上,我每秒最多可以接收100条消息,程序每秒只能处理20条消息 HiveMQClient.MqttMsgPublishReceived += HiveMQClient_MqttMsgPublishReceived; 因此,我有所有的HiveMQ日志和遥测,我可以清楚地看到消息以正确的速率(每秒100次)到达我的应用程序,但奇怪的是,托管客户端程序的PC的CPU以其容量的10%运行 我想知道我是
HiveMQClient.MqttMsgPublishReceived += HiveMQClient_MqttMsgPublishReceived;
因此,我有所有的HiveMQ日志和遥测,我可以清楚地看到消息以正确的速率(每秒100次)到达我的应用程序,但奇怪的是,托管客户端程序的PC的CPU以其容量的10%运行
我想知道我是否需要“多线程的事件”或有什么我错过了
谢谢大家
编辑
在MqttMsgPublishReceived
事件中,我有一个ThreadPool
存储我在azure blob帐户中收到的消息。经过一些审查,我明白这就是问题所在(谢谢@Hans Kilian)
现在我有了一个azure blob存储帐户(标准配置),每秒只接受30个呼叫。我尝试升级到高级层,但它仅适用于虚拟机VHD映像
有人知道如何提高这些数字吗 在客户端网络线程上运行
MQTTMSGPPublishReceived
回调,如果您对性能感兴趣,则不应在此回调中执行任何实际工作
对于高性能应用程序,该模型通常使用MqttMsgPublishReceived
方法将传入消息放置在客户端的本地队列中,并使线程池使用该队列中的消息
当使用QOS 1或2消息时,这一点变得更加重要,因为在MqttMsgPublishReceived
返回并且QOS握手完成之前,代理不会发送下一条消息
正如@HandKilian在评论中所说的,数据库之类的东西也可能是一个瓶颈,但使用线程池和数据库连接池相结合会有所帮助,因为它可以确保您不会为每条消息建立和破坏到数据库的连接。这取决于您处理消息的方式,你的瓶颈可能在别的地方。通常,在我工作过的系统中,数据库是瓶颈。你是对的,让我用更多细节编辑我的问题