【发布时间】:2017-06-12 11:43:06
【问题描述】:
我正在尝试使用 5 个进程每秒发布 1000 条消息,每个进程有 200 条消息,关于一个独特的主题。并尝试使用 5 个进程进行监听,每个进程监听一个正在发布消息的主题。
问题是我无法接收所有数千条消息,并且每次执行此过程时收到的消息数量都不是恒定的。
据我了解,AWS IOT 应该允许每秒 3000 条入站消息。
【问题讨论】:
-
我想您没有看到足够多的消息可能有很多原因。也许您生成的不够多,也许您的网络连接限制了性能。也许经纪人端有一个限制因素。你可以控制一些事情。您尝试更改什么以查看性能是否发生变化?
-
我已经放置了一个打印语句,以确保我正在发送所需数量的消息,并且我正在一个 ec2 实例中运行该程序,所以我认为网络连接不是一个原因。据我从 AWS 文档中了解到,入站消息的数量可以是 3000,所以我认为我没有办法接近限制。我已将 QoS 级别设置为 1。我尝试在多个主题/单个主题上发送它,从而减少了在一个主题上发布的消息数量。
-
我假设您已经对每个进程进行了检测,以编程方式计算发送方进程正在发送多少消息,以及接收方进程正在接收多少消息(例如,使用 time.perf_counter)?有什么方法可以在本地同时运行发送方和接收方(在两个不同端口上使用 localhost 作为端点)?
-
请附上发布者/订阅者代码
-
感谢您对此问题发表评论。问题是我在循环中调用发布方法并且我的程序在发布后立即终止,但是发布方法正在创建一个线程来发布网络请求。因此,当我的主程序存在时,所有线程尚未发布有效负载,因此我无法获取所有消息。再次感谢您。
标签: mqtt publish-subscribe aws-iot