2017-06-12 91 views
2

我试图每秒发布1000条消息,每个消息使用5个进程,每个消息在独特的主题上都有200条消息。并尝试使用5个进程监听每个人在哪个消息正在发布的主题上进行监听。无法接收所有发布的消息[AWS IOT]

问题是我无法接收所有的千条消息,并且每次按照这个过程收到的消息数量都不是恒定的。

就我所知,AWS IOT应该允许每秒传入3000条入站消息。

+0

我想可能有很多可能的原因,你为什么没有看到足够的消息。也许你没有足够的产生,也许你的网络连接限制了性能。也许在经纪商方面有一个限制因素。你有一些东西的控制。你有什么试图改变,看看表现是否改变? – barny

+0

我已经打印了一份声明,以确保我发送了所需数量的消息,并且正在ec2实例中运行该程序,所以我不认为网络连接可能是一个原因。据我了解的AWS文档,入站邮件的数量可以是3000,所以我认为我没有办法接近极限。我已经将QoS级别设置为1.我尝试在多个主题/单个主题上发送它,减少了发布在主题上的消息数量。 – user3382968

+0

我认为你已经安装了每个进程,以编程方式计算发送进程发送的消息数量以及接收进程接收的数量(使用time.perf_counter)?有什么办法可以在本地运行发送者和接收者(在两个不同端口上使用本地主机作为端点)? – Schollii

回答

0

尝试在QOS-1或QOS-2级别发布数据。

什么是服务质量?

服务质量(QoS)级别是消息的发送者和接收者之间关于传送消息保证的协议。有3个QoS级别中MQTT:

至多一次(0)

至少一次(1)

一次(2)。

在谈论QoS时,总是有两个不同的部分提供消息:将客户端发布给代理和代理以订阅客户端。由于存在细微的差异,我们需要单独看看。发布客户端到代理的QoS级别取决于客户端为特定消息设置的QoS级别。当代理将消息传输到订阅客户端时,它将使用客户端提前订阅的QoS。这意味着,如果使用较低的QoS进行订购,QoS保证可以降级为特定的接收客户端。

为什么服务质量很重要?

QoS是MQTT的一个主要特性,它使通信在不可靠的网络中变得更容易,因为协议处理重传并保证消息的传递,而不管底层传输的不可靠性如何。此外,它还允许客户根据其网络可靠性和应用程序逻辑来选择QoS级别。