RabbitMQ消息的大小和types

  1. RabbitMQ队列中可以存储哪些消息? 只有string? 或者我可以select我想要存储的types:int,二进制,string等?
  2. 一条消息的最大尺寸是多less?
  3. 可以创build多less队列或交换? 还是取决于服务器的能力?

  1. 理论上任何东西都可以作为消息来存储/发送。 你其实不想在队列上存储任何东西。 如果队列大部分时间是空的,系统工作效率最高。 你可以发送任何你想要的队列有两个先决条件:

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

    string非常简单,它们有一个内置的字节转换方法。 如果你知道这是一个string,那么你知道如何将其转换回来。 最好的select是使用像XML,JSON或YML这样的标记string。 这样你可以将对象转换为string,然后再转换回原始对象。 他们在编程语言中工作,所以只要知道如何理解对象,就可以用不同的语言来编写消费者。 我在Java工作。 我想发送复杂的消息与字段中的子对象。 我使用我自己的消息对象。 消息对象有两个额外的方法toBytesfromBytes ,它们可以从字节stream中转换出来。 我使用路由密钥,毫不怀疑消费者正在接收什么types的消息。 该消息是可序列化的。 这工作正常,但限制,因为我只能用于其他Java程序。

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

    您可能还想阅读其性能测量: http : //www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/博客/ 2012/04/25 / RabbitMQ的性能的测量部分-2 /

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

  1. 看到robthewolf的回答 。

  2. 最大消息大小为2GB,但对此大小的消息进行性能调整无效。 最大邮件大小

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

3A。 默认情况下,服务器没有施加队列长度限制。 但是,您可以通过服务器端策略(configuration)或客户端策略来限制这一点。 最大队列长度

相关post上有更多的信息和链接。