มีวิธีการรักษาระดับ MQTT QoS จนกว่าจะถึงลูกค้าหรือไม่


9

MQTT อนุญาตให้ผู้ส่งกำหนดระดับคุณภาพการบริการ (QoS) ซึ่งให้การรับประกันบางอย่างเกี่ยวกับว่าจะได้รับข้อความหรือไม่และอนุญาตให้ซ้ำซ้อนได้หรือไม่ บทความนี้จากHiveMQเน้นถึงปัญหาการลดระดับซึ่งลูกค้าที่มีระดับ QoS ต่ำกว่าจะไม่ได้รับข้อความพร้อมการรับประกันว่าผู้ส่งร้องขอ:

ดังที่ได้กล่าวไปแล้ว QoS ที่ไหลระหว่างไคลเอนต์การประกาศและการสมัครเป็นสองสิ่งที่แตกต่างกันและ QoS อาจแตกต่างกัน นั่นหมายถึงระดับ QoS อาจแตกต่างจากไคลเอนต์ A ผู้เผยแพร่ข้อความและไคลเอนต์ B ผู้ที่ได้รับข้อความที่เผยแพร่ ระหว่างผู้ส่งและนายหน้า QoS จะถูกกำหนดโดยผู้ส่ง เมื่อนายหน้าส่งข้อความถึงสมาชิกทั้งหมดระบบจะใช้ QoS ของการสมัครสมาชิกจากลูกค้า B

MQTT มีวิธีระบุว่าการปรับลดรุ่นนี้ไม่เป็นที่ยอมรับและต้องส่งข้อความโดยใช้ QoS ที่ผู้ส่งดั้งเดิมร้องขอ ตัวเลือกเดียวที่จะทำให้แน่ใจว่าทั้งผู้ส่งและผู้รับมีการตั้งค่า QoS ที่ต้องการก่อนที่จะส่งข้อความหรือไม่

คำตอบ:


8

สิ่งหนึ่งที่ควรจดจำเมื่อทำงานกับ MQTT คือ "ทั้งผู้สมัครสมาชิกและผู้จัดพิมพ์ถือเป็นลูกค้า MQTT"

ตามที่กล่าวไว้ QoS ที่ตั้งไว้ในขณะที่การเผยแพร่นั้นเกี่ยวข้องกับนายหน้า (B) ไม่ใช่ลูกค้ารายอื่น ดังนั้นเพื่อให้แน่ใจว่าสมาชิก (S) ได้รับทุกอย่างที่ผู้เผยแพร่ (P) กำลังเผยแพร่เราจำเป็นต้องใช้ QoS 1

ลองดูกรณีต่างๆ: P - ส่งด้วย QoS 0 ซึ่งหมายความว่าทุกข้อความจะอยู่ที่ B มากที่สุดหนึ่งครั้ง (หนึ่งครั้งหรือศูนย์) ในกรณีนี้ถ้า S สมัครเป็นสมาชิก B ด้วย QoS 0 - ไม่มีการรับประกันว่าแม้ว่าโบรกเกอร์ (B) จะได้รับข้อความที่จะไปถึง S ในที่สุด QoS 1 - S จะได้รับ QoS 2 - S อย่างแน่นอนจะไม่ได้รับหลายข้อความในขณะที่โบรกเกอร์สามารถทำได้

ถ้าเราทำเช่นเดียวกันกับ QoS อื่น ๆ เราจะได้รู้จัก QoS1 สำหรับสมาชิกที่ใช้งานได้ดีกับทุกระดับเนื่องจาก QoS 1 นั้นยอดเยี่ยมมาก


MQTT ไม่ได้ระบุสิ่งที่เหมือนกัน แต่เราสามารถบรรลุ QoS ของผู้ส่งโดยใช้ QoS 1 ในขณะที่สมัคร


4

QoS 1 หรือ 2 ระดับเท่านั้นมั่นใจได้ว่าข้อความที่เผยแพร่มาถึงนายหน้า ผู้สมัครสมาชิก QoS 1 หรือ 2 รับรองโบรกเกอร์ที่ได้รับข้อความ

การเผยแพร่ด้วย 1 หรือ 2 ไม่ได้หมายความว่าทุกคนกำลังฟัง

กรณีการใช้งานของคุณคืออะไร?


3
อย่าถามคำถามด้วยคำตอบ หากสิ่งที่ไม่ชัดเจนออกความคิดเห็นก่อน
Bence Kaulics

ฉันอยากรู้เกี่ยวกับสถานการณ์ใด ๆ ที่คุณอาจมีเซ็นเซอร์ส่งข้อมูลไปยังนายหน้าข้อความจากนั้นถูกส่งต่อไปยังคอมพิวเตอร์หรือหน่วยประมวลผลอื่น ๆ ที่จำเป็นอย่างยิ่งที่ QoS รับประกันจะถูกเก็บไว้
Aurora0001
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.