ActiveMQ หรือ RabbitMQ หรือ ZeroMQ หรือ [ปิด]


645

เราสนใจที่จะรับฟังประสบการณ์ใด ๆ กับข้อดีและข้อเสียของ ActiveMQ เทียบกับ RabbitMQ กับ ZeroMQ ข้อมูลเกี่ยวกับคิวข้อความที่น่าสนใจอื่น ๆ ก็ยินดีต้อนรับเช่นกัน


2
ฉันใหม่เพื่อคิวข้อความและอ่านเพิ่มเติมเกี่ยวกับกรณีการใช้งานที่แท้จริงของมันที่stackoverflow.com/q/1035949/181870 ต่อมาในขณะที่ googling สำหรับหัวข้อ / บทความที่เกี่ยวข้องกับคิวข้อความ (โดยเฉพาะ JMS) ฉันเจอOpenJMS - การใช้งานโอเพ่นซอร์สของ Java Message Service API 1.1 Java ของ Sun Microsystems สิ่งที่ฉันประหลาดใจก็คือมันไม่ได้กล่าวถึงหรือกล่าวถึงที่นี่? ฉันแค่ต้องการตรวจสอบกับชุมชนว่า OpenJMS เกี่ยวข้องกับหัวข้อ / การอภิปรายนี้หรือไม่และถ้าเป็นเช่นนั้นตาม OP แล้วประสบการณ์ใด ๆ ที่มีข้อดีข้อเสียของแบบเดียวกันจะช่วยได้หรือไม่
— Gnanam

3
3 ปีต่อมาบันทึกสำหรับผู้ที่กำลังดูผ่านที่นี่ ... ลองคิดดูว่าทำไมคุณถึงต้องการใช้มิดเดิลแวร์ที่จัดคิวข้อความ หากเหตุผลคือเพื่อกระจายงานภายในคลัสเตอร์ให้ดูที่ Celery มันทำงานในระดับที่สูงกว่านามธรรมกว่าวิธีแก้ปัญหาแบบ MQ ใช้ RabbitMQ เพื่อย้ายข้อความ แต่มีการสนับสนุนที่โดดเด่นสำหรับความหมายเฉพาะงาน
— Chris Johnson

คำตอบ:


342

แก้ไข:คำตอบเริ่มต้นของฉันมุ่งเน้นไปที่ AMQP ฉันตัดสินใจที่จะเขียนใหม่เพื่อเสนอมุมมองที่กว้างขึ้นในหัวข้อ

เทคโนโลยีการส่งข้อความ 3 ตัวเหล่านี้มีวิธีการต่าง ๆ ในการสร้างระบบกระจาย:

RabbitMQเป็นหนึ่งในการนำโพรโทคอล AMQP (พร้อมด้วย Apache Qpid) มาใช้ ดังนั้นจึงใช้สถาปัตยกรรมโบรกเกอร์ซึ่งหมายความว่าข้อความจะถูกจัดคิวบนโหนดกลางก่อนที่จะถูกส่งไปยังลูกค้า วิธีการนี้ทำให้ RabbitMQ ใช้งานและปรับใช้ได้ง่ายเนื่องจากสถานการณ์ขั้นสูงเช่นการกำหนดเส้นทางการโหลดบาลานซ์หรือการจัดคิวข้อความแบบถาวรได้รับการสนับสนุนในโค้ดเพียงไม่กี่บรรทัด อย่างไรก็ตามมันยังทำให้สามารถปรับขนาดได้น้อยลงและ“ ช้าลง” เนื่องจากโหนดกลางเพิ่มความหน่วงแฝงและซองข้อความมีขนาดค่อนข้างใหญ่

ZeroMqเป็นระบบส่งข้อความที่มีน้ำหนักเบามากซึ่งออกแบบมาเป็นพิเศษสำหรับสถานการณ์ปริมาณงานสูง / เวลาแฝงต่ำเช่นเดียวกับที่คุณพบในโลกการเงิน Zmq สนับสนุนสถานการณ์การส่งข้อความขั้นสูงมากมาย แต่ตรงกันข้ามกับ RabbitMQ คุณจะต้องใช้ตัวเองเป็นส่วนใหญ่โดยการรวมเฟรมเวิร์กต่าง ๆ (เช่นซ็อกเก็ตและอุปกรณ์) Zmq มีความยืดหยุ่นสูง แต่คุณจะต้องศึกษาคู่มือ80 หน้าหรือมากกว่านั้น (ซึ่งฉันแนะนำให้อ่านสำหรับใครก็ตามที่เขียนระบบการกระจายแม้ว่าคุณจะไม่ได้ใช้ Zmq) ก่อนที่จะทำอะไรที่ซับซ้อนกว่าการส่งข้อความ ระหว่าง 2 เพื่อน

ActiveMQอยู่ในระดับกลาง เช่นเดียวกับ Zmq มันสามารถปรับใช้กับทั้งนายหน้าและ P2P ทอพอโลยี เช่น RabbitMQ มันง่ายกว่าที่จะใช้สถานการณ์ขั้นสูง แต่โดยทั่วไปแล้วจะต้องเสียค่าใช้จ่ายที่ประสิทธิภาพ มันคือมีดกองทัพสวิสสำหรับการส่งข้อความ :-)

ในที่สุดทั้ง 3 ผลิตภัณฑ์:

  • มี apis ไคลเอนต์สำหรับภาษาที่พบบ่อยที่สุด (C ++, Java, .Net, Python, Php, Ruby, …)
  • มีเอกสารที่แข็งแกร่ง
  • ได้รับการสนับสนุนอย่างแข็งขัน

22
ในขณะที่เป็นจริงฉันไม่แน่ใจว่าการยอมรับ AMQP มีความสัมพันธ์กับคำถามเดิมหรือไม่ ฉันคิดว่ามีข้อควรพิจารณาที่สำคัญกว่าสำหรับการเลือกคิวข้อความมากกว่าการใช้โปรโตคอลลวดพื้นฐาน
— StaxMan

8
คำถามไม่ได้กล่าวถึงที่ต้องใช้ AMQP แต่คำตอบนี้มุ่งเน้นไปที่ AMQP หากเราต้องถือว่า JMS เป็นข้อกำหนดแล้วคำตอบนั้นจะตรงกันข้าม: ActiveMQ เป็นที่นิยมที่สุด RabbitMQ มีการสนับสนุนที่น่าจะใช้ได้ หากไม่มีการสันนิษฐานว่าเป็นโปรโตคอลลวด: ดูคำตอบอื่น
— Fletch

19
มีงานใน RabbitMQ และ ActiveMQ ฉันอยากจะแนะนำให้คุณอยู่ห่างจาก ActiveMQ การเปิดตัวนั้นค่อนข้างบั๊กมากและฉันก็ไม่มีปัญหาในการหยุดทำงานของเครื่องจักรและการรั่วไหลของหน่วยความจำ ฯลฯ ... RabbitMQ ในทางกลับกันใช้งานได้ หลังจากที่ฉันเสียบมันฉันไม่จำเป็นต้องมองอีกครั้ง มันทำในสิ่งที่ต้องการ ถ้าคุณชอบฉันมีการสอน RabbitMQ อย่างง่าย ๆ บนบล็อกของฉันjarloo.com/rabbitmq-c-tutorial
— Kelly

2
หลังจากดูโพสต์งานสำหรับ RabbitMQ กับ ActiveMQ RabbitMQ ดูเหมือนจะมีความต้องการมากขึ้น ActiveMQ ได้รับรอบนานกว่า แต่มันถูกร้องขอโดยนายจ้างเกือบเท่ากัน

1
คำแนะนำสำหรับการ ZMQ ยังเป็นจริงตลกและดีอ่าน :)
— meawoppl

174

ทำไมคุณถึงพลาดSparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?

เซิร์ฟเวอร์คิวข้อความ

เซิร์ฟเวอร์คิวข้อความมีให้บริการในหลายภาษา, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling or Sparrow), Scala (Kestrel, Kafka) หรือ Java (ActiveMQ) สามารถดูภาพรวมสั้น ๆ ได้ที่นี่

กระจอก

  • เขียนโดย Alex MacCaw
  • Sparrow เป็นคิวที่มีน้ำหนักเบาเขียนใน Ruby ซึ่ง“ พูดถึง memcache”

นกเล็กชนิดหนึ่ง

เหยี่ยวชวา

  • เขียนโดย Robey Pointer
  • โคลน Starling เขียนใน Scala (พอร์ตของ Starling จาก Ruby ถึง Scala)
  • คิวถูกเก็บไว้ในหน่วยความจำ แต่ล็อกออนดิสก์

RabbitMQ

  • RabbitMQ เป็น Message Queue Server ใน Erlang
  • เก็บงานในหน่วยความจำ (คิวข้อความ)

Apache ActiveMQ

  • ActiveMQ เป็นนายหน้าข้อความโอเพนซอร์สใน Java

Beanstalkd

  • เขียนโดย Philotic, Inc. เพื่อปรับปรุงเวลาตอบสนองของแอปพลิเคชัน Facebook
  • บริการงานในหน่วยความจำหน่วยความจำส่วนใหญ่เขียนใน C
  • Docu: http://nubyonrails.com/articles/about-this-blog-beanstalk-messaging-queue

Amazon SQS

Kafka

  • เขียนที่ LinkedIn ใน Scala
  • ใช้โดย LinkedIn เพื่อลดการประมวลผลหน้าทั้งหมดและมุมมองอื่น ๆ
  • ค่าเริ่มต้นของการใช้ความพยายามใช้แคชดิสก์ของระบบปฏิบัติการสำหรับข้อมูลยอดนิยม
  • รองรับทั้งแบบออนไลน์เป็นการประมวลผลแบบออฟไลน์

ZMQ

  • ซ็อกเก็ตไลบรารีที่ทำหน้าที่เป็นกรอบงานพร้อมกัน
  • เร็วกว่า TCP สำหรับผลิตภัณฑ์คลัสเตอร์และซูเปอร์คอมพิวเตอร์
  • ดำเนินการกับข้อความใน inproc, IPC, TCP และ multicast
  • เชื่อมต่อ N-to-N ผ่าน fanout, pubsub, ไปป์ไลน์, ร้องขอการตอบกลับ
  • Asynch I / O สำหรับแอพส่งข้อความแบบมัลติคอร์ที่ปรับขนาดได้

EagleMQ

  • EagleMQเป็นโอเพ่นซอร์สประสิทธิภาพสูงและผู้จัดการคิวที่มีน้ำหนักเบา
  • เขียนใน C
  • เก็บข้อมูลทั้งหมดในหน่วยความจำและสนับสนุนการคงอยู่
  • มันมีโปรโตคอลของตัวเอง รองรับการทำงานกับคิวเส้นทางและช่องทาง

IronMQ

  • IronMQ
  • เขียนใน Go
  • บริการจัดการคิวอย่างเต็มที่
  • มีทั้งแบบ cloud และ on-premise

ฉันหวังว่าสิ่งนี้จะเป็นประโยชน์สำหรับเรา แหล่ง


คุณมีความคิด / ความคิดในการเพิ่ม / แสดงความคิดเห็นสำหรับคำถามของฉันถามในพื้นที่แสดงความคิดเห็นของคำถามนี้หรือไม่- stackoverflow.com/questions/731233/… ?
— Gnanam

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

1
queues.io - อย่าลืมเพิ่มรายละเอียดที่นั่นเทียบกับที่นี่
— asyncwait

83

ข้อมูลมากกว่าที่คุณอยากรู้:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes


UPDATE

เพียงอธิบายสิ่งที่ Paul เพิ่มไว้ในความคิดเห็น หน้าดังกล่าวข้างต้นจะตายหลังจากปี 2010 เพื่อให้อ่านด้วยเหน็บแนมของเกลือ มีการเปลี่ยนแปลงหลายสิ่งใน 3 ปี

ประวัติความเป็นมาของหน้า Wiki


7
ฉันคิดว่าพวกนี้กำลังคิดเกี่ยวกับการเข้าคิวผิด - คิวไม่ควรจะ 1 (หรือมากกว่า) ต่อผู้ใช้ พวกเขาควรจะวางงานของพวกเขาในไม่กี่คิวแล้วใช้ กล่องจดหมาย (หรือกล่องจดหมาย ) สำหรับผู้ใช้แต่ละคน
— Michael Deardeuff

1
ไมเคิล - ต้องการที่จะอธิบายเพิ่มเติมอีกเล็กน้อยหรือไม่ ปัญหาคือการจัดส่งตามเวลาจริงในระบบที่ใช้การแชทเป็นกลุ่ม ถ้าฉันเข้าใจถูกต้องคุณกำลังพูดถึงกลไกการจัดเก็บที่ทนทานสำหรับข้อความเป็นจุดปลาย (กล่องจดหมาย) ถ้าเป็นเช่นนั้นมันไม่พอดีกับใบเรียกเก็บเงินพวกเขาต้องการให้ส่งการแชททันทีและลูกค้าจะเป็นผู้สมัครโดยตรง เท่าที่ฉันสามารถบอกได้ว่ามีคิวตามหัวข้อจำนวนมากไม่ใช่กรณีการใช้ที่เหมาะสมที่สุด?
— Josh

1
อัปเดต: หน้าวิกิ SecondLife นั้นถูกเขียนขึ้นในปี 2009 ตอนนี้ในปี 2013 หลายจุดที่กล่าวถึงเกี่ยวกับคิวข้อความที่แตกต่างกันที่พวกเขาตรวจสอบนั้นไม่เป็นปัจจุบันอีกต่อไปเนื่องจากการปรับปรุงอย่างต่อเนื่องใน MQs ทั้งหมด ส่วนใหญ่หรือทั้งหมดของ MQs ที่พวกเขาทดสอบนั้นดีขึ้นในบางแง่มุมในตอนนี้
— Paul Legato

71

มันขึ้นอยู่กับการใช้งานของคุณจริงๆ

การเปรียบเทียบ 0MQ กับ ActiveMQ หรือ RabbitMQ นั้นไม่ยุติธรรม ActiveMQ และ RabbitMQ คือ Messaging Systems ซึ่งต้องการการติดตั้งและการดูแลระบบ พวกเขามีฟีเจอร์ตามเข็มได้มากกว่า ZeroMQ พวกเขามีคิวถาวรจริงสนับสนุนธุรกรรม ฯลฯ

ZeroMQ คือการปรับใช้ซ็อกเก็ตที่เน้นข้อความ นอกจากนี้ยังเหมาะสำหรับการเขียนโปรแกรมแบบอะซิงโครนัสในกระบวนการ เป็นไปได้ที่จะเรียกใช้ "ระบบส่งข้อความองค์กร" เหนือ ZeroMQ แต่คุณจะต้องติดตั้งระบบของคุณเองเป็นจำนวนมาก

ดังนั้น:

ActiveMQ, RabbitMQ, Websphere MQ & MSMQ คือ "คิวข้อความองค์กร"

ZeroMQ เป็นข้อความที่จัดวาง IPC Library


7
คุณสามารถใช้มากกว่าหนึ่ง rabbitmq.com/blog/2010/10/18/rabbitmq0mq-bridgeพูดคุยเกี่ยวกับวิธีที่คุณสามารถใช้ 0MQ เพื่อเชื่อมโยงระหว่างโบรกเกอร์ RabbitMQ หลายแห่งและสร้างสหพันธ์ที่รวมตัวกันอย่างหลวม ๆ
— Michael Dillon

34

มีการเปรียบเทียบระหว่าง RabbitMQ และ ActiveMQ เป็นที่นี่ ActiveMQ ได้รับการกำหนดค่าไว้เพื่อรับประกันการส่งข้อความซึ่งสามารถให้ความประทับใจได้ช้าเมื่อเทียบกับระบบส่งข้อความที่เชื่อถือได้น้อยกว่า คุณสามารถเปลี่ยนการกำหนดค่าสำหรับประสิทธิภาพได้ตลอดเวลาหากคุณต้องการและได้ประสิทธิภาพที่ดีเท่ากับระบบส่งข้อความอื่น ๆ อย่างน้อยคุณก็มีทางเลือกนั้น มีข้อมูลจำนวนมากในฟอรัมและคำถามที่ถามบ่อยเกี่ยวกับ ActiveMQ สำหรับการกำหนดค่าการปรับขนาดประสิทธิภาพและความพร้อมใช้งานสูง นอกจากนี้ ActiveMQ จะรองรับ AMQP 1.0 เมื่อสเป็คจะได้รับการสรุปพร้อมกับรูปแบบสายอื่น ๆ เช่น STOMP

ข้อดีอีกอย่างสำหรับ ActiveMQ คือโครงการ Apache ดังนั้นจึงมีความหลากหลายในชุมชนนักพัฒนา - และไม่เชื่อมโยงกับ บริษัท เดียว


22

ฉันไม่ได้ใช้ ActiveMQ หรือ RabbitMQ แต่ใช้ ZeroMQ ความแตกต่างอย่างมากที่ฉันเห็นระหว่าง ZeroMQ และ ActiveMQ เป็นต้นนั้นคือ 0MQ นั้นไม่มีนายหน้าและไม่ได้สร้างความน่าเชื่อถือสำหรับการส่งข้อความ หากคุณกำลังมองหา API การส่งข้อความที่ใช้งานง่ายที่รองรับรูปแบบการส่งข้อความการขนส่งแพลตฟอร์มและการผูกภาษาจำนวนมาก 0MQ นั้นคุ้มค่าที่จะดู หากคุณกำลังมองหาแพลตฟอร์มการส่งข้อความแบบเป่าแล้ว 0MQ อาจไม่เหมาะกับการเรียกเก็บเงิน

ดูwww.zeromq.org/docs:cookbookสำหรับตัวอย่างมากมายเกี่ยวกับวิธีการใช้ 0MQ

ฉันประสบความสำเร็จในการใช้ 0MQ สำหรับการส่งข้อความในแอปพลิเคชันตรวจสอบการใช้ไฟฟ้า (ดูhttp://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )


14

ฉันใช้ zeroMQ ฉันต้องการระบบส่งข้อความที่เรียบง่ายและฉันไม่ต้องการความยุ่งยากของนายหน้า ฉันไม่ต้องการระบบองค์กรขนาดใหญ่ที่มุ่งเน้น Java

หากคุณต้องการระบบที่รวดเร็วและง่ายและคุณต้องรองรับหลายภาษา (ฉันใช้ C และ. net) ดังนั้นฉันขอแนะนำให้ดูที่ 0MQ


ยังใช้ ZMQ ในสภาพแวดล้อม C / C ++ เร็วมาก. ใช้รูปแบบโบรกเกอร์ เหมาะสำหรับแอพดูสุนัข VOIP แบบเรียลไทม์ของเรากำลังทำไมโคร pmts สำหรับฟาร์มของเซิร์ฟเวอร์ kamailio SIP ค่อนข้างแน่ใจว่าฉันสามารถเขียนโบรคเกอร์ที่ซับซ้อนมากโดยใช้ ZMQ แต่จะประเมินผลิตภัณฑ์เพิ่มเติมก่อนที่จะทำเช่นนั้น

10

ฉันสามารถเพิ่ม 2 เซนต์ของฉันเกี่ยวกับ ActiveMQ เท่านั้น แต่เนื่องจากนี่เป็นหนึ่งในยอดนิยม:

ภาษาที่คุณต้องการเขียนอาจมีความสำคัญ แม้ว่า ActiveMQ จะมีไคลเอนต์เป็นส่วนใหญ่การใช้งาน C # ของพวกเขานั้นยังห่างไกลจากความสมบูรณ์เมื่อเทียบกับ Java Library

ซึ่งหมายความว่าฟังก์ชันการทำงานพื้นฐานบางอย่างไม่สม่ำเสมอ (โปรโตคอลล้มเหลวที่ ... ดี ... ล้มเหลวในบางกรณีไม่มีการสนับสนุนการส่งซ้ำ) และอื่น ๆ ก็ไม่ได้มี เนื่องจาก. NET ดูเหมือนจะไม่สำคัญกับโครงการเลยการพัฒนาค่อนข้างช้าและดูเหมือนจะไม่มีแผนเปิดตัวใด ๆ Trunk มักจะเสียหายดังนั้นหากคุณพิจารณาสิ่งนี้คุณอาจต้องการพิจารณาร่วมทำโครงการหากคุณต้องการให้สิ่งต่าง ๆ ดำเนินต่อไป

จากนั้นก็มี ActiveMQ ซึ่งมีฟีเจอร์ที่ดีมากมาย แต่ก็มีปัญหาแปลก ๆ เช่นกัน เราใช้ activemq เวอร์ชัน Fuse (Progress) เพื่อเหตุผลด้านความมั่นคง แต่ถึงอย่างนั้นก็มี "บั๊ก" แปลก ๆ ที่คุณต้องการทราบ:

  • โบรกเกอร์ที่หยุดส่งข้อความในบางโอกาส
  • ข้อผิดพลาดของวารสารที่ทำให้คิวแสดงข้อความที่ไม่ได้อยู่ที่นั่นอีกต่อไป (พวกเขาจะไม่ถูกส่งไปยังผู้บริโภค แต่ยังคงอยู่)
  • ลำดับความสำคัญยังไม่ได้ดำเนินการ (อยู่ในรายการปัญหาตั้งแต่จุดเริ่มต้นของมนุษย์)
  • ฯลฯ

ทั้งหมดและทั้งหมดเป็นผลิตภัณฑ์ที่ดีถ้าคุณสามารถมีชีวิตอยู่กับปัญหา:

A) ไม่กลัวที่จะมีส่วนร่วมอย่างแข็งขันเมื่อใช้. NET
B) พัฒนาใน java ;-)


5
การปรับปรุงเล็กน้อย: KahaDB เป็นที่เก็บถาวรเริ่มต้นสำหรับ ActiveMQ อย่างไรก็ตาม: มันไม่เสถียรเลย ในการทดสอบของเราเราได้เห็นความเสียหายของฐานข้อมูล (บางอันน่าอยู่คนอื่น ๆ คิดราคาเราประมาณ 15,000 ข้อความ) ระวังสิ่งนี้
— Noctris

8

ZeroMQ นั้นจริง ๆ แล้วมีคิวเป็นศูนย์! มันเป็นความผิดพลาดจริงๆ! มันไม่ได้มีการรอคิว, หัวข้อ, การคงอยู่, ไม่มีอะไร! มันเป็นเพียงมิดเดิลแวร์สำหรับ sockets API ถ้ามันเป็นสิ่งที่คุณดูเท่! อย่างอื่นลืมมัน! มันไม่เหมือน activeMQ หรือ rabbitmq


8

มีการเปรียบเทียบคุณสมบัติและประสิทธิภาพของ RabbitMQ ActiveMQ และ QPID ที่ให้ไว้ที่
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/

โดยส่วนตัวฉันลองทั้งสามข้อข้างต้น RabbitMQ เป็นประสิทธิภาพที่ดีที่สุดตามที่ฉันต้องการ แต่มันไม่มีตัวเลือกการเข้าแทนที่และการกู้คืน ActiveMQ มีคุณสมบัติส่วนใหญ่ แต่ช้ากว่า

อัปเดต: HornetQยังเป็นตัวเลือกที่คุณสามารถพิจารณาได้นั่นคือ JMS Complaint ซึ่งเป็นตัวเลือกที่ดีกว่า ActiveMQ หากคุณกำลังมองหาโซลูชันที่ใช้ JMS


6

ฉันเขียนเกี่ยวกับประสบการณ์ครั้งแรกของฉันเกี่ยวกับ AMQP, Qpid และ ZeroMQ ที่นี่: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/

ความเห็นส่วนตัวของฉันคือ AMQP นั้นใช้ได้ถ้าคุณต้องการสิ่งอำนวยความสะดวกการส่งข้อความแบบถาวรและไม่ต้องกังวลว่าโบรกเกอร์อาจเป็นปัญหาคอขวด นอกจากนี้ไคลเอนต์ C ++ หายไปสำหรับ AMQP (Qpid ไม่ได้รับการสนับสนุนของฉัน แต่ไม่แน่ใจเกี่ยวกับไคลเอนต์ ActiveMQ) แต่อาจกำลังดำเนินการอยู่ ZeroMQ อาจเป็นวิธีอื่น


6

ฉันใช้ ActiveMQ ในสภาพแวดล้อมการผลิตประมาณ 3 ปีแล้ว ในขณะที่ทำงานเสร็จสิ้นการจัดเรียงไลบรารี่ของไคลเอ็นต์เวอร์ชันที่ทำงานอย่างถูกต้องและปราศจากข้อบกพร่องอาจเป็นปัญหาได้ กำลังมองหาการเปลี่ยนไปใช้ RabbitMQ


5

มีการอภิปรายในความคิดเห็นของโพสต์บล็อกนี้เกี่ยวกับ Twitter ที่เขียนคิวข้อความของตัวเองซึ่งอาจน่าสนใจ

สตีฟทำการทดสอบอย่างกว้างขวางและทดสอบความเครียดของ ActiveMQ, RabbitMQ และอื่น ๆ ActiveMQ นั้นค่อนข้างช้า (ช้ากว่า Kestrel มาก) RabbitMQ ก็ล้มเหลวอย่างต่อเนื่องกับผู้ผลิตจำนวนมากและผู้บริโภคน้อยเกินไป

คุณอาจไม่ได้โหลดเหมือน Twitter ในตอนแรก :)


5

มีแอพพลิเคชั่นเพียงไม่กี่ตัวที่ปรับแต่งค่าได้มากเท่ากับ ActiveMQ คุณลักษณะบางอย่างที่ทำให้ ActiveMQ โดดเด่นคือ:

ขนาดการดึงข้อมูลล่วงหน้าที่กำหนดค่าได้ เธรดที่กำหนดค่าได้ ล้มเหลวที่กำหนดค่าได้ การแจ้งเตือนการดูแลระบบที่กำหนดให้กับผู้ผลิต ... รายละเอียดที่:

http://activemq.net/blog http://activemq.apache.org


0

Abie มันทั้งหมดลงมาในกรณีการใช้งานของคุณ แทนที่จะใช้บัญชีของบุคคลอื่นในกรณีการใช้งานของพวกเขาอย่าลังเลที่จะโพสต์กรณีการใช้งานของคุณไปยังรายการ Rabbitmq- อภิปราย การถามทวิตเตอร์จะทำให้คุณได้รับคำตอบเช่นกัน ด้วยความปรารถนาดี alexis


0

เกี่ยวกับ ZeroMQ หรือที่รู้จักกันว่า 0MQ อย่างที่คุณรู้อยู่แล้วมันเป็นข้อความที่จะทำให้คุณได้รับข้อความมากที่สุดต่อวินาที (ประมาณ 4 ล้านต่อวินาทีบนเซิร์ฟเวอร์อ้างอิงของพวกเขาเมื่อฉันตรวจสอบครั้งล่าสุด) แต่อย่างที่คุณอาจทราบแล้ว เอกสารไม่มีอยู่จริง คุณจะมีเวลาในการค้นหาวิธีเริ่มต้นเซิร์ฟเวอร์อย่างยากลำบาก ฉันคิดว่านั่นเป็นส่วนหนึ่งที่ว่าทำไมยังไม่มีใครสนับสนุนเกี่ยวกับ 0MQ

มีความสุข!


11
มีตัวอย่างในตำราที่มีzeromq.org/docs:cookbookและมีคู่มือการapi.zeromq.org/zmq.html
— Nick

7
ในขณะที่ zmq รวดเร็วและมี api ง่ายโปรดจำไว้ว่า: ไม่มีการคงอยู่ไม่มีธุรกรรม ไม่มีการตรวจจับผู้บริโภคที่มีความล่าช้าหรือช้า (มีการส่งข้อความโดยไม่ได้รับการแจ้งเตือนใด ๆ จากโปรแกรมผู้ผลิต) Sidenote: zmq ไม่มีเซิร์ฟเวอร์ดังนั้นคุณจะไม่พบเอกสารสำหรับการเริ่มต้นเซิร์ฟเวอร์ พวกเขามีพร็อกซีเซิร์ฟเวอร์หากคุณต้องการบางอย่างเช่นนั้น
— nos

0

หากคุณมีความสนใจในการใช้งานเชิงพาณิชย์คุณควรจะดูที่นิพพานจากช่องทางของฉัน

เนอร์วาน่าถูกใช้อย่างมากในอุตสาหกรรมบริการทางการเงินสำหรับแพลตฟอร์มการค้าและการกระจายราคาที่มีความหน่วงต่ำขนาดใหญ่

มีการสนับสนุนภาษาการเขียนโปรแกรมไคลเอ็นต์ที่หลากหลายทั่วทั้งองค์กรเว็บไซต์และโดเมนมือถือ

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

เนอร์วานามีให้ดาวน์โหลดฟรีเพื่อการพัฒนา


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