回答:
理論的には、何でもメッセージとして保存/送信できます。実際には、キューに何も保存する必要はありません。ほとんどの場合、キューが空の場合、システムは最も効率的に機能します。次の2つの前提条件を使用して、キューに何でも送信できます。
文字列は非常に簡単で、バイトとの間で変換するための組み込みメソッドがあります。文字列であることがわかっている場合は、元に戻す方法を知っています。最良のオプションは、XML、JSON、YMLなどのマークアップ文字列を使用することです。このようにして、オブジェクトを文字列に変換し、元のオブジェクトに戻すことができます。それらはプログラミング言語を越えて機能するので、オブジェクトを理解する方法を知っていれば、コンシューマーをプロデューサーに対して異なる言語で書くことができます。私はJavaで働いています。フィールドにサブオブジェクトを含む複雑なメッセージを送信したい。自分のメッセージオブジェクトを使用します。メッセージオブジェクトには2つの追加メソッドがtoBytes
あり、fromBytes
バイトストリームとの間で変換を行います。私は、コンシューマーが受信するメッセージのタイプについて疑いのないルーティングキーを使用しています。メッセージはシリアライズ可能です。これは問題なく動作しますが、他のJavaプログラムでしか使用できないため、制限があります。
メッセージのサイズはサーバーのメモリによって制限されます。メッセージが永続的である場合は、HDDの空き容量も制限されます。おそらく、大きすぎるメッセージを送信したくないでしょう。ファイルまたはDBへの参照を送信することをお勧めします。
また、パフォーマンスの測定値を確認することもできます 。http: //www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ブログ/ 2012/04/25 / rabbitmq-performance-measurements-part-2 /
キューはかなり軽量であり、ほとんどの場合、接続数によって制限されます。おそらくサーバーに依存します。同様の質問に関するいくつかの情報は次のとおりです:http : //lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html
RabbitMQ の最大メッセージサイズは、バージョン3.8.0より前は2 GiBでした。
%% 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
バージョン3.8.0以降は512 MiBです。
%% 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サーバーソフトウェアによって課されるハード制限はありませんが、サーバーが実行されているハードウェアがこの制限に非常によく影響する場合があります。
3a。デフォルトでは、サーバーによって課されるキューの長さの制限はありません。ただし、サーバー側のポリシー(構成)またはクライアント側のポリシーを使用してこれを制限できます。キューの最大長
関連する投稿に詳細とリンクがあります。