- ข้อความประเภทใดที่อนุญาต (สตริงไบต์จำนวนเต็ม ฯลฯ )
- ขนาดสูงสุดของข้อความคืออะไร?
- จำนวนคิวและการแลกเปลี่ยนสูงสุดคืออะไร?
คำตอบ:
ในทางทฤษฎีทุกอย่างสามารถจัดเก็บ / ส่งเป็นข้อความได้ จริงๆแล้วคุณไม่ต้องการเก็บอะไรไว้ในคิว ระบบจะทำงานได้อย่างมีประสิทธิภาพสูงสุดหากคิวว่างเกือบตลอดเวลา คุณสามารถส่งอะไรก็ได้ที่คุณต้องการไปยังคิวโดยมีเงื่อนไขสองประการ:
สตริงนั้นค่อนข้างง่ายมีวิธีการในตัวสำหรับการแปลงเป็นและจากไบต์ ถ้าคุณรู้ว่ามันเป็นสตริงคุณก็จะรู้วิธีแปลงกลับ ตัวเลือกที่ดีที่สุดคือใช้สตริงมาร์กอัปเช่น XML, JSON หรือ YML ด้วยวิธีนี้คุณสามารถแปลงวัตถุเป็น Strings และกลับไปเป็นวัตถุดั้งเดิมได้อีกครั้ง พวกเขาทำงานข้ามภาษาโปรแกรมดังนั้นผู้บริโภคของคุณสามารถเขียนภาษาอื่นถึงผู้ผลิตของคุณได้ตราบเท่าที่พวกเขารู้วิธีทำความเข้าใจวัตถุ ฉันทำงานใน Java ฉันต้องการส่งข้อความที่ซับซ้อนพร้อมกับวัตถุย่อยในฟิลด์ ฉันใช้วัตถุข้อความของตัวเอง วัตถุข้อความมีสองวิธีเพิ่มเติมtoBytes
และfromBytes
ที่แปลงเป็นและจาก bytestream ฉันใช้คีย์การกำหนดเส้นทางที่ไม่ต้องสงสัยเลยว่าผู้บริโภคได้รับข้อความประเภทใด ข้อความสามารถต่อเนื่องได้ ใช้งานได้ดี แต่มีข้อ จำกัด เนื่องจากฉันสามารถใช้ได้กับโปรแกรม Java อื่นเท่านั้น
ขนาดของข้อความถูก จำกัด โดยหน่วยความจำบนเซิร์ฟเวอร์และหากยังคงอยู่ต่อไปก็จะมีเนื้อที่ว่างบน HDD ด้วยเช่นกัน คุณอาจไม่ต้องการส่งข้อความที่ใหญ่เกินไป การส่งข้อมูลอ้างอิงไปยังไฟล์หรือฐานข้อมูลอาจดีกว่า
คุณอาจต้องการอ่านข้อมูลเกี่ยวกับการวัดประสิทธิภาพของพวกเขา: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ บล็อก / 2012/04/25 / rabbitmq- ประสิทธิภาพการวัดส่วนที่ 2 /
คิวค่อนข้างเบาคุณมักจะถูก จำกัด ด้วยจำนวนการเชื่อมต่อที่คุณมี จะขึ้นอยู่กับเซิร์ฟเวอร์มากที่สุด นี่คือข้อมูลบางส่วนสำหรับคำถามที่คล้ายกัน: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-Feb February/003042.html
ขนาดสูงสุดของข้อความคืออะไร?
ขนาดของข้อความสูงสุดใน RabbitMQ ที่ใช้จะเป็น2 ลิ่มก่อนเวอร์ชัน 3.8.0:
%% Trying to send a term across a cluster larger than 2^31 bytes will
%% cause the VM to exit with "Absurdly large distribution output data
%% buffer". So we limit the max message size to 2^31 - 10^6 bytes (1MB
%% to allow plenty of leeway for the #basic_message{} and #content{}
%% wrapping the message body).
-define(MAX_MSG_SIZE, 2147383648).
อ้างอิง: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/include/rabbit.hrl#L279
เป็น512 MiBตั้งแต่เวอร์ชัน 3.8.0:
%% Max message size is hard limited to 512 MiB.
%% If user configures a greater rabbit.max_message_size,
%% this value is used instead.
-define(MAX_MSG_SIZE, 536870912).
อ้างอิง: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/include/rabbit.hrl#L238
ดูคำตอบของ robthewolf
ขนาดข้อความสูงสุดคือ 2GB อย่างไรก็ตามการปรับแต่งประสิทธิภาพสำหรับข้อความขนาดนี้ไม่ได้ผล ขนาดข้อความสูงสุด
ไม่มีข้อ จำกัด อย่างหนักที่กำหนดโดย RabbitMQ Server Software สำหรับจำนวนคิวอย่างไรก็ตามฮาร์ดแวร์ที่เซิร์ฟเวอร์กำลังทำงานอยู่อาจส่งผลกระทบต่อขีด จำกัด นี้ได้เป็นอย่างดี
3a. ไม่มีการจำกัดความยาวคิวที่กำหนดโดยเซิร์ฟเวอร์โดยค่าเริ่มต้น อย่างไรก็ตามคุณสามารถ จำกัด สิ่งนี้ผ่านนโยบายฝั่งเซิร์ฟเวอร์ (การกำหนดค่า) หรือนโยบายฝั่งไคลเอ็นต์ความยาวคิวสูงสุด