RabbitMQ消息的大小和types
- RabbitMQ队列中可以存储哪些消息? 只有string? 或者我可以select我想要存储的types:int,二进制,string等?
- 一条消息的最大尺寸是多less?
- 可以创build多less队列或交换? 还是取决于服务器的能力?
-
理论上任何东西都可以作为消息来存储/发送。 你其实不想在队列上存储任何东西。 如果队列大部分时间是空的,系统工作效率最高。 你可以发送任何你想要的队列有两个先决条件:
- 你正在发送的东西可以转换为字节串
- 消费者确切地知道它正在得到什么以及如何将其转换为原始对象
string非常简单,它们有一个内置的字节转换方法。 如果你知道这是一个string,那么你知道如何将其转换回来。 最好的select是使用像XML,JSON或YML这样的标记string。 这样你可以将对象转换为string,然后再转换回原始对象。 他们在编程语言中工作,所以只要知道如何理解对象,就可以用不同的语言来编写消费者。 我在Java工作。 我想发送复杂的消息与字段中的子对象。 我使用我自己的消息对象。 消息对象有两个额外的方法
toBytes
和fromBytes
,它们可以从字节stream中转换出来。 我使用路由密钥,毫不怀疑消费者正在接收什么types的消息。 该消息是可序列化的。 这工作正常,但限制,因为我只能用于其他Java程序。 -
消息的大小受限于服务器上的内存,如果它是持久的,那么也是免费的硬盘空间。 你可能不想发送太大的消息; 发送对文件或数据库的引用可能会更好。
您可能还想阅读其性能测量: http : //www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/博客/ 2012/04/25 / RabbitMQ的性能的测量部分-2 /
-
队列是相当轻的重量,你很可能会受到你拥有的连接数量的限制。 这将取决于最有可能的服务器。 以下是一个类似问题的信息: http : //lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html
-
看到robthewolf的回答 。
-
最大消息大小为2GB,但对此大小的消息进行性能调整无效。 最大邮件大小
-
RabbitMQ服务器软件对队列数量没有硬性限制,但服务器运行的硬件可能会影响这个限制。
3A。 默认情况下,服务器没有施加队列长度限制。 但是,您可以通过服务器端策略(configuration)或客户端策略来限制这一点。 最大队列长度
相关post上有更多的信息和链接。