2017-06-12 97 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級別。