อย่าสมัครเป็นสมาชิก # - ดังนั้นจะถ่ายโอนข้อความทั้งหมดไปยังฐานข้อมูลด้วย Mosquitto ได้อย่างไร


16

รายการบล็อกของ HiveMQภายใต้ "แนวทางปฏิบัติที่ดีที่สุด" ไม่สมัครสมาชิกไวด์การ์ดหลายระดับเมื่อพยายามถ่ายโอนข้อความทั้งหมดไปยังฐานข้อมูล พวกเขาอ้างว่าลูกค้าที่สมัครรับข้อมูลอาจไม่สามารถติดตามข่าวสารจำนวนมากและเสนอให้ใช้ปลั๊กอินโบรกเกอร์เพื่อขอเข้าสู่กระแสข้อความโดยตรง

บางครั้งมีความจำเป็นต้องสมัครสมาชิกข้อความทั้งหมดซึ่งถูกถ่ายโอนผ่านนายหน้าตัวอย่างเช่นเมื่อยังคงมีอยู่ทั้งหมดในฐานข้อมูล สิ่งนี้ไม่ควรทำโดยใช้ไคลเอนต์ MQTT และสมัครสมาชิกไวด์การ์ดหลายระดับ เหตุผลก็คือบ่อยครั้งที่ไคลเอนต์ที่สมัครรับข้อมูลไม่สามารถดำเนินการโหลดข้อความที่กำลังจะมา โดยเฉพาะถ้าคุณมีปริมาณงานมาก โซลูชันที่แนะนำของเราคือการนำส่วนขยายในโบรกเกอร์ MQTT มาใช้ตัวอย่างเช่นระบบปลั๊กอินของ HiveMQ ช่วยให้คุณสามารถเชื่อมต่อกับพฤติกรรมของ HiveMQ และเพิ่มชุดคำสั่งแบบอะซิงโครนัสเพื่อประมวลผลข้อความขาเข้าแต่ละรายการ

มีทั้ง

  • ระบบที่คล้ายกัน (ส่วนขยาย / ปลั๊กอิน) สำหรับนายหน้า Mosquitto
  • อีกวิธีที่แนะนำที่ทำงานร่วมกับ mosquitto หรือ
  • หลักฐานที่สมเหตุสมผลว่าวิธีนี้ไม่จำเป็นเลยนั่นคือลูกค้าที่สมัครเป็นสมาชิก#สามารถทำได้ดี?

/programming//q/31584613/3984613ไม่ได้ตอบคำถามนี้อย่างละเอียด

คำตอบ:


12

ระบบที่คล้ายกัน (ส่วนขยาย / ปลั๊กอิน) สำหรับนายหน้า mosquitto

เท่าที่ฉันรู้ว่าไม่มีปลั๊กอิน / ส่วนขยายสำหรับโบรกเกอร์ mosquitto (อย่างน้อยก็ไม่มีโอเพนซอร์ส)

อีกวิธีที่แนะนำที่ทำงานร่วมกับ mosquitto

ฉันสามารถพูดได้ตามประสบการณ์ของฉันกับนายหน้า Mosquitto และ AWS IoT คุณสามารถสมัครโดยตรงกับ '#'

หลักฐานที่สมเหตุสมผล

หลังจากดูคำถามนี้ฉันก็อยากรู้อยากเห็นถึงขีด จำกัด ปริมาณงานและเพื่อค้นหาว่ามีความจำเป็นสำหรับระบบส่วนขยายหรือไม่ ดังนั้นฉันตั้งค่าต่อไปนี้:

  • ฟังก์ชั่น 100 AWS แลมบ์ดาที่ทำหน้าที่เสมือนอุปกรณ์ปลายทางเพื่อส่งข้อมูลสุ่มไปยังเกตเวย์ (EC2 อินสแตนซ์t2.nano500MB RAM)
  • ฟังก์ชั่นทุก ๆ 60 วินาทีจะถูกกระตุ้นให้เผยแพร่ข้อมูลไปยังเกตเวย์ไปยังหัวข้อต่างๆ (lambdatoec2 / {VariableTopicNumberFrom1-100}
  • อินสแตนซ์ EC2 กำลังเรียกใช้ Mosquitto 1.4.10

ณ ตอนนี้ฉันเห็นว่าไม่มีปัญหาในการสมัครเป็นสมาชิก # โดยไม่มีระบบส่วนขยายใด ๆ แต่อีกครั้งฉันยังคงต้องทดสอบกับสถานการณ์กรณีขอบไม่กี่ (ฉันจะอัปเดตคำตอบเมื่อฉันจะทดสอบพวกเขา)


คำตอบ "ถูกต้อง" คือการทดสอบ หากสามารถแสดงให้เห็นว่าประสิทธิภาพของระบบของคุณได้รับผลกระทบในทางลบโดยการเพิ่มผู้สมัครสมาชิกไปที่ # ให้ทำการกำหนดค่าโบรคเกอร์ใหม่เพื่อไม่อนุญาต # การสมัครสมาชิก ฉันตอบคำถามนี้เพราะ @bravokeyl ทำอย่างนั้น
John Deters

11

การสนทนาในรายการส่งเมล์ openHAB นี้ดูเหมือนจะแนะนำว่าไม่มีปัญหาในการใช้#เป็นการสมัครสมาชิกเพื่อรับข้อความทั้งหมด:

ในขณะที่การแก้ไขปัญหาอุปกรณ์ MQTT มันเกิดขึ้นกับฉันที่บางครั้งฉันหวังว่าฉันจะเห็นข้อความ MQTT ทั้งหมดที่โบรกเกอร์ Mosquitto เห็นแทนที่จะเป็นหัวข้อเฉพาะ มีวิธีทำเช่นนี้หรือไม่?

ใครบางคนตอบคำถามนี้ให้คุณในรายการ Mosquitto; ใช้ไวด์การ์ด (#)

คำถาม Stack Overflowนี้ยังแนะนำวิธีการเดียวกัน:

การสมัครเป็นสมาชิก # ให้การสมัครรับข้อมูลทุกอย่างยกเว้นหัวข้อที่เริ่มต้นด้วย $ (โดยปกติจะเป็นหัวข้อควบคุมอยู่แล้ว)

เป็นการดีกว่าที่จะรู้ว่าคุณสมัครอะไรก่อนแน่นอนและโปรดทราบว่าการกำหนดค่านายหน้าบางอย่างอาจไม่อนุญาตให้สมัครเป็นสมาชิก # อย่างชัดเจน

ในฐานะที่เป็นแหลมออกโดยBence Kaulics , สเปคไม่รัฐที่#ถูกต้อง:

ความคิดเห็นเชิงบรรทัดฐาน

  • “ #” ถูกต้องและจะได้รับทุกข้อความของแอปพลิเคชัน

จริง ๆ แล้วฉันก็เถียงว่าข้อเรียกร้องดั้งเดิมนั้นสมเหตุสมผลหรือไม่:

เหตุผลก็คือบ่อยครั้งที่ไคลเอนต์ที่สมัครรับข้อมูลไม่สามารถดำเนินการโหลดข้อความที่กำลังจะมา

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

โดยสรุปการอ้างสิทธิ์ HiveMQ ดูเหมือนจะไม่ได้รับการสนับสนุนจากหลักฐานมากมายจากแหล่งข้อมูลอื่นและเมื่อคุณพิจารณาว่ามันหมายถึงอะไรจริง ๆ แล้วมันดูเหมือนจะไม่สมเหตุสมผลโดยเฉพาะ


10

ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะต้องพิจารณาว่ามีหลายกรณีการใช้งานสำหรับโบรกเกอร์ MQTT เช่นเดียวกับซอฟต์แวร์ใด ๆ

การจัดการข้อความแชทสำหรับผู้ใช้หลายพันล้านคน (ผู้ใช้หลายคนอัตราการส่งข้อความค่อนข้างต่ำต่อผู้ใช้) นั้นแตกต่างจากระบบที่มีลูกค้าเพียงไม่กี่คน แต่มีอัตราข้อความสูงและทั้งคู่ต่างจากระบบอัตโนมัติภายในบ้าน .

HiveMQ กำลังคิดเกี่ยวกับแอปพลิเคชั่นอัตราข้อความ / ลูกค้าที่สูงมาก - ซึ่งในกรณีนี้ความสามารถของนายหน้าเกือบจะสูงกว่าลูกค้า

หากคุณต้องการสมัครสมาชิก#ในระบบอัตโนมัติในบ้านของคุณก็ไม่น่าจะทำให้เกิดปัญหาได้ คุณสามารถตรวจสอบและดูว่าโบรกเกอร์ใช้ CPU มากเกินไปหรือไม่

ในขณะที่คำตอบอื่น ๆ , การสมัครสมาชิก#จะทำให้คุณทุกหัวข้อ 'ปกติ' $นั่นคือสิ่งที่ไม่ได้เริ่มต้นด้วย ผมตีความข้อมูลจำเพาะว่าเป็นหัวข้อที่เริ่มต้นด้วยกัน$เป็นต้นไม้ที่แยกจากกันทั้งในตัวเองดังนั้นคุณจะต้องสมัครเป็นสมาชิก$SYS/#, $whatever/#จะได้รับทุกอย่าง คุณมักจะไม่ต้องการทำเช่นนั้นสำหรับแอปพลิเคชันทั่วไป

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