Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-将多个blob保存到azure帐户_C#_Azure_Azure Storage Blobs_Mqtt - Fatal编程技术网

C#-将多个blob保存到azure帐户

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%运行 我想知道我是

我有一个简单的项目,它使用M2mqtt客户机库连接到HiveMQ代理。当消息到达时,将触发事件,事实上,我每秒最多可以接收100条消息,程序每秒只能处理20条消息

 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在评论中所说的,数据库之类的东西也可能是一个瓶颈,但使用线程池和数据库连接池相结合会有所帮助,因为它可以确保您不会为每条消息建立和破坏到数据库的连接。

这取决于您处理消息的方式,你的瓶颈可能在别的地方。通常,在我工作过的系统中,数据库是瓶颈。你是对的,让我用更多细节编辑我的问题