- RabbitMQ 대기열에 어떤 메시지를 저장할 수 있습니까? 문자열 만? 아니면 내가 저장하고 싶은 유형을 선택할 수 있습니까 : int, binary, string 등?
- 한 메시지의 최대 크기는 얼마입니까?
- 얼마나 많은 대기열 또는 교환을 만들 수 있습니까? 아니면 서버의 전원에 의존합니까?
답변:
이론적으로는 무엇이든 메시지로 저장 / 전송할 수 있습니다. 실제로 대기열에 아무것도 저장하고 싶지 않습니다. 시스템은 대기열이 대부분 비어있는 경우 가장 효율적으로 작동합니다. 두 가지 전제 조건을 사용하여 원하는 모든 것을 대기열에 보낼 수 있습니다.
문자열은 매우 쉬우 며, 바이트와의 변환을위한 내장 메소드가 있습니다. 그것이 문자열이라는 것을 알고 있다면 그것을 다시 변환하는 방법을 알고 있습니다. 가장 좋은 방법은 XML, JSON 또는 YML과 같은 마크 업 문자열을 사용하는 것입니다. 이렇게하면 객체를 문자열로 변환 한 다음 다시 원래 객체로 변환 할 수 있습니다. 그들은 프로그래밍 언어에서 작동하므로 소비자가 객체를 이해하는 방법을 알고있는 한 생산자와 다른 언어로 작성할 수 있습니다. 저는 Java에서 일합니다. 필드에 하위 개체가있는 복잡한 메시지를 보내고 싶습니다. 내 메시지 개체를 사용합니다. 메시지 개체에는 두 가지 추가 메서드가 있습니다.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에서이었다 지브 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. 기본적으로 서버에서 부과하는 큐 길이 제한은 없습니다. 그러나 서버 측 정책 (구성) 또는 클라이언트 측 정책을 통해이를 제한 할 수 있습니다.최대 대기열 길이
관련 게시물 에 대한 자세한 정보와 링크가 있습니다.