วิธีใช้ขวดหรือขวดกับ RabbitMQ?
ฝากข้อความ
เฮ้ ฉันเป็นซัพพลายเออร์ของผลิตภัณฑ์ขวดและขวดและวันนี้ฉันจะพูดคุยเกี่ยวกับวิธีการใช้ขวดหรือขวดกับ RabbitMQ หากคุณเข้าสู่การพัฒนาเว็บหรือเพียงแค่มองหาวิธีเพิ่มประสิทธิภาพแอพของคุณโพสต์นี้เหมาะสำหรับคุณ
ก่อนอื่นมาแนะนำสั้น ๆ ว่าขวดขวดและ RabbitMQ คืออะไร Flask เป็นกรอบเว็บที่มีน้ำหนักเบาใน Python มันง่ายมากที่จะเริ่มต้นด้วยและเหมาะสำหรับการสร้างเว็บแอปพลิเคชันขนาดเล็กถึงขนาดกลาง ขวดยังเป็นไมโครที่เรียบง่ายและรวดเร็ว - กรอบสำหรับ Python มันมีการออกแบบที่เรียบง่ายซึ่งทำให้เป็นเรื่องง่ายที่จะทำงานด้วย ในทางกลับกัน RabbitMQ เป็นนายหน้าข้อความ มันช่วยส่วนต่าง ๆ ของแอปพลิเคชันของคุณสื่อสารกันโดยการส่งและรับข้อความ


ทำไมต้องรวมขวด/ขวดกับ RabbitMQ?
ดังนั้นทำไมคุณถึงต้องการใช้ขวดหรือขวดกับ RabbitMQ? ในแอปพลิเคชั่นจริง - โลกคุณอาจมีงานที่ใช้เวลานานในการกรอกเช่นส่งอีเมลจำนวนมากหรือประมวลผลข้อมูลขนาดใหญ่ หากคุณจัดการงานเหล่านี้โดยตรงในแอปพลิเคชันขวดหรือขวดของคุณอาจทำให้เว็บแอปของคุณช้าหรือไม่ตอบสนอง นั่นคือที่มาของ RabbitMQ คุณสามารถขนถ่ายเวลาเหล่านี้ - การบริโภคงานไปยังคิวข้อความ (RabbitMQ) และให้คนงานคนอื่นจัดการกับพวกเขาในพื้นหลัง ด้วยวิธีนี้เว็บแอปพลิเคชันของคุณสามารถให้บริการคำขออื่น ๆ ได้โดยไม่ต้องรองานยาว - ทำงานให้เสร็จ
การตั้งค่าสภาพแวดล้อม
ก่อนที่เราจะเริ่มเขียนโค้ดเราต้องตั้งค่าสภาพแวดล้อมของเรา ก่อนอื่นให้แน่ใจว่าคุณติดตั้ง Python บนเครื่องของคุณแล้ว จากนั้นคุณสามารถติดตั้งขวดหรือขวดและยาวห้องสมุด (ซึ่งใช้ในการโต้ตอบกับ RabbitMQ ใน Python) โดยใช้ปิ๊ก-
PIP Install Flask # หรือ Pip Install Bottle Pip ติดตั้ง pika
หากคุณใช้ Flask นี่คือตัวอย่างง่ายๆของวิธีการรวมเข้ากับ RabbitMQ สมมติว่าเรามีแอปพลิเคชันขวดที่ต้องส่งข้อความไปยังคิว RabbitMQ เมื่อผู้ใช้ทำการร้องขอ
นำเข้า pika จาก Flask นำเข้า Flask App = Flask (__ name__) @app.route ('/send_message') def send_message (): การเชื่อมต่อ = pika.blockingconnection (pika.connectionParameters ('localhost') channel = connection.channel () channel.basic_publish (exchange = '', routing_key = 'my_queue', body = message) พิมพ์ ("[x] ส่งข้อความ % r" %) connection.close () ส่งคืนข้อความ 'ส่งไปยัง rabbitmq!' ถ้า __name__ == '__Main__': app.run (debug = true)
ในรหัสนี้เมื่อผู้ใช้เยี่ยมชม/send_messageเส้นทางแอปพลิเคชัน Flask ของเราเชื่อมต่อกับเซิร์ฟเวอร์ RabbitMQ ในเครื่องประกาศคิวชื่อmy_queueและส่งข้อความไป
ทีนี้มาดูวิธีการตั้งค่าคนงานเพื่อบริโภคข้อความจากคิว
นำเข้า pika def callback (ch, วิธีการ, คุณสมบัติ, ร่างกาย): พิมพ์ ("[x] ได้รับ % r" % body) การเชื่อมต่อ = pika.blockingconnection (pika.connectionParameters ('localhost') ช่อง = การเชื่อมต่อช่อง () channel.queue_declare (queue = 'my_queue') auto_ack = true, on_message_callback = การโทรกลับ) พิมพ์ ('[*] กำลังรอข้อความเพื่อออกจาก Ctrl+C') channel.start_consuming ()
สคริปต์คนงานนี้เชื่อมต่อกับเซิร์ฟเวอร์ RabbitMQ เดียวกันประกาศmy_queueอีกครั้งและเริ่มบริโภคข้อความจากมัน เมื่อใดก็ตามที่มีข้อความใหม่มาถึงการโทรกลับฟังก์ชั่นเรียกว่าและข้อความถูกพิมพ์ไปยังคอนโซล
หากคุณใช้ขวดกระบวนการค่อนข้างคล้ายกัน นี่คือตัวอย่างขวดง่าย ๆ :
นำเข้า pika จากเส้นทางการนำเข้าขวดวิ่ง @Route ('/send_message') def send_message (): การเชื่อมต่อ = pika.blockingConnection (pika.connectionParameters ('localhost') ช่อง = การเชื่อมต่อ channel () channel.queue_declare (queue = 'my_queue') channel.basic_publish (exchange = '', routing_key = 'my_queue', body = message) พิมพ์ ("[x] ส่งข้อความ % r" %) connection.close () ส่งคืนข้อความ 'ส่งไปยัง rabbitmq!' run (host = 'localhost', พอร์ต = 8080, debug = true)
ประโยชน์ของผลิตภัณฑ์ขวดและขวดของเรา
ในฐานะซัพพลายเออร์ฉันสามารถบอกคุณได้ว่าขวดขวดและขวดของเราเช่นหม้อกาแฟฉนวนสแตนเลสอยู่ด้านบน - บาก พวกเขาทำด้วยวัสดุที่มีคุณภาพสูงทำให้มั่นใจได้ถึงความทนทานและการใช้งานระยะยาว ไม่ว่าคุณจะเป็นนักพัฒนาซอฟต์แวร์ที่ต้องการภาชนะที่เชื่อถือได้สำหรับเครื่องดื่มของคุณในขณะที่เขียนโค้ดหรือธุรกิจที่กำลังมองหารายการส่งเสริมการขายผลิตภัณฑ์ของเราเป็นตัวเลือกที่ยอดเยี่ยม
การจัดการข้อผิดพลาดและแนวทางปฏิบัติที่ดีที่สุด
เมื่อทำงานกับขวดหรือขวดและ RabbitMQ การจัดการข้อผิดพลาดเป็นสิ่งสำคัญ ตัวอย่างเช่นหากเซิร์ฟเวอร์ RabbitMQ หยุดทำงานแอปพลิเคชันของคุณอาจเพิ่มข้อยกเว้นเมื่อพยายามเชื่อมต่อกับมัน คุณสามารถใช้ลอง - ยกเว้นบล็อกเพื่อจัดการกับข้อผิดพลาดเหล่านี้อย่างสง่างาม
นำเข้า pika จาก Flask นำเข้า Flask App = Flask (__ name__) @app.route ('/send_message') def send_message (): ลอง: การเชื่อมต่อ = pika.blockingconnection (pika.connectionParameters ('localhost') channel = connection.channel Rabbitmq! ' channel.basic_publish (exchange = '', routing_key = 'my_queue', body = message) พิมพ์ ("[x] ส่งข้อความ % r" %) connection.close () ส่งคืนข้อความ 'ส่งไปยัง rabbitmq!' ยกเว้น pika.exceptions.amqpconnectionError: return 'ล้มเหลวในการเชื่อมต่อกับ rabbitmq!' ถ้า __name__ == '__Main__': app.run (debug = true)
แนวทางปฏิบัติที่ดีที่สุดอีกประการหนึ่งคือการจัดการการเชื่อมต่อและช่องทางอย่างถูกต้อง ตรวจสอบให้แน่ใจว่าได้ปิดการเชื่อมต่อหลังจากเสร็จสิ้นการใช้งานเพื่อหลีกเลี่ยงการรั่วไหลของทรัพยากร
การปรับขนาดและประสิทธิภาพ
หากแอปพลิเคชันของคุณเติบโตขึ้นคุณอาจต้องปรับขนาดการตั้งค่า RabbitMQ ของคุณ คุณสามารถใช้คนงานหลายคนเพื่อบริโภคข้อความจากคิวพร้อมกันซึ่งสามารถปรับปรุงประสิทธิภาพโดยรวม นอกจากนี้คุณยังสามารถตั้งค่าคลัสเตอร์ของเซิร์ฟเวอร์ RabbitMQ เพื่อความพร้อมใช้งานสูง
บทสรุป
การใช้ขวดหรือขวดกับ RabbitMQ เป็นการผสมผสานที่ทรงพลังที่สามารถช่วยให้คุณสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพและตอบสนองได้มากขึ้น ไม่ว่าคุณจะจัดการกับงานที่ยาวนาน - การทำงานหรือเพียงแค่ต้องการวิธีการสื่อสารระหว่างส่วนต่าง ๆ ของแอพของคุณ RabbitMQ อาจเป็นส่วนเสริมที่ยอดเยี่ยม
หากคุณสนใจผลิตภัณฑ์ขวดและขวดของเราเราชอบที่จะคุยกับคุณ ติดต่อเราเพื่อขอข้อมูลเพิ่มเติมและเริ่มต้นความสัมพันธ์ทางธุรกิจที่ยอดเยี่ยม เราอยู่ที่นี่เพื่อให้ผลิตภัณฑ์และบริการที่ดีที่สุดแก่คุณ
การอ้างอิง
- "Flask Web Development" โดย Miguel Grinberg
- "RabbitMQ ในการดำเนินการ" โดย Alvaro Videla และ Jason JW Williams






