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.