- İzin verilen mesaj türleri (dizeler, baytlar, tam sayılar vb.) Nelerdir?
- Bir mesajın maksimum boyutu nedir?
- Maksimum sıra ve değişim sayısı nedir?
Yanıtlar:
Teorik olarak her şey bir mesaj olarak saklanabilir / gönderilebilir. Aslında kuyruklarda hiçbir şey saklamak istemezsiniz. Kuyruklar çoğu zaman boşsa sistem en verimli şekilde çalışır. Sıraya iki ön koşulla istediğiniz her şeyi gönderebilirsiniz:
Dizeler oldukça kolaydır, baytlara ve baytlardan dönüştürme için yerleşik bir yöntemi vardır. Bunun bir dize olduğunu biliyorsanız, onu nasıl geri dönüştüreceğinizi biliyorsunuzdur. En iyi seçenek XML, JSON veya YML gibi bir işaretleme dizesi kullanmaktır. Bu şekilde, nesneleri Dizelere ve tekrar orijinal nesnelere dönüştürebilirsiniz; programlama dillerinde çalışırlar, böylece tüketiciniz, nesneyi nasıl anlayacağını bildiği sürece üreticinize farklı bir dilde yazılabilir. Java'da çalışıyorum. Alanlardaki alt nesnelerle karmaşık mesajlar göndermek istiyorum. Kendi mesaj nesnemi kullanıyorum. Mesaj nesnesinin iki ek yöntemi vardır toBytes
vefromBytes
bytestream'e dönüşür. Tüketicinin ne tür bir mesaj aldığına dair hiçbir şüphe bırakmayan yönlendirme anahtarları kullanıyorum. Mesaj Seri hale getirilebilir. Bu iyi çalışıyor, ancak onu yalnızca diğer Java programlarıyla kullanabildiğim için sınırlayıcı.
Mesajın boyutu, sunucudaki bellek ile sınırlıdır ve eğer kalıcıysa, o zaman da boş HDD alanı da olur. Muhtemelen çok büyük mesajlar göndermek istemezsiniz; bir dosya veya DB'ye referans göndermek daha iyi olabilir.
Ayrıca performans ölçülerini de okumak isteyebilirsiniz: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ blog / 2012/04/25 / rabbitmq-performans-ölçümleri-part-2 /
Kuyruklar oldukça hafiftir, büyük olasılıkla sahip olduğunuz bağlantı sayısı ile sınırlı olacaksınız. Büyük olasılıkla sunucuya bağlı olacaktır. İşte benzer bir soru hakkında bazı bilgiler: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html
Bir mesajın maksimum boyutu nedir?
Maksimum mesaj boyutu RabbitMQ içinde eskiden GiB 2 sürümü 3.8.0 öncesi:
%% 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).
Referans: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/include/rabbit.hrl#L279
It has been 512 MiB sürümü 3.8.0 beri:
%% 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).
Referans: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/include/rabbit.hrl#L238
Robthewolf'un cevabına bakın .
Maksimum mesaj boyutu 2 GB'dir, ancak bu boyuttaki mesajlar için performans ayarı etkili değildir. Maksimum Mesaj Boyutu
RabbitMQ Sunucu Yazılımının kuyruk sayısına dair kesin bir sınırı yoktur, ancak sunucunun üzerinde çalıştığı donanım bu limiti çok iyi etkileyebilir.
3 A. Varsayılan olarak sunucu tarafından uygulanan bir kuyruk uzunluğu sınırı yoktur. Ancak, bunu sunucu tarafı politikası (yapılandırma) veya istemci tarafı politikası ile sınırlandırabilirsiniz. Maksimum Sıra Uzunluğu
Daha fazla bilgi ve bir üzerinde bağlantıları vardır ilgili yazı .