【问题标题】:What are the limits of messages, queues and exchanges?消息、队列和交换的限制是什么?
【发布时间】:2013-08-23 14:48:08
【问题描述】:
  1. 允许的消息类型有哪些(字符串、字节、整数等)?
  2. 消息的最大大小是多少?
  3. 队列和交换的最大数量是多少?

【问题讨论】:

    标签: rabbitmq message-queue message amqp rabbitmq-exchange


    【解决方案1】:
    1. 理论上任何东西都可以作为消息存储/发送。您实际上不想在队列中存储任何内容。如果队列大部分时间都是空的,则系统工作效率最高。您可以在两个前提条件下将任何您想要的内容发送到队列:

      • 你发送的东西可以转换成字节串
      • 消费者确切地知道它得到了什么以及如何将其转换为原始对象

      字符串非常简单,它们有一个内置的方法来转换字节。如果您知道它是一个字符串,那么您就知道如何将其转换回来。最好的选择是使用 XML、JSON 或 YML 等标记字符串。通过这种方式,您可以将对象转换为字符串,然后再转换回原始对象;它们可以跨编程语言工作,因此您的消费者可以用与您的生产者不同的语言编写,只要它知道如何理解对象。 我在 Java 中工作。我想在字段中发送带有子对象的复杂消息。我使用自己的消息对象。消息对象有两个额外的方法toBytesfromBytes 可以在字节流之间进行转换。我使用的路由键可以毫无疑问地确定消费者正在接收什么类型的消息。该消息是可序列化的。这很好用,但有限制,因为我只能将它与其他 Java 程序一起使用。

    2. 消息的大小受服务器上的内存限制,如果它是持久的,那么可用的硬盘空间也是如此。您可能不想发送太大的消息;发送对文件或数据库的引用可能会更好。

      您可能还想了解他们的绩效指标: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/

    3. 队列的重量很轻,您很可能会受到您拥有的连接数的限制。这很可能取决于服务器。以下是有关类似问题的一些信息: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html

    【讨论】:

      【解决方案2】:
      1. robthewolf's answer

      2. 最大消息大小为 2GB,但是,此大小的消息的性能调整无效。 Max Message Size

      3. RabbitMQ 服务器软件对队列数量没有硬性限制,但是,运行服务器的硬件可能会影响这个限制。

      3a。默认情况下,服务器没有强加队列长度限制。但是,您可以通过服务器端策略(配置)或客户端策略来限制这一点。 Max Queue Length

      related post 上有更多信息和链接。

      【讨论】:

        【解决方案3】:

        消息的最大大小是多少?

        在 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

        【讨论】:

          猜你喜欢
          • 2021-12-13
          • 2011-04-27
          • 1970-01-01
          • 2013-11-05
          • 2023-04-03
          • 1970-01-01
          • 2011-11-13
          • 2011-12-29
          • 1970-01-01
          相关资源
          最近更新 更多