rabbitmq - 消息、队列和交换器有哪些限制?

标签 rabbitmq message-queue message amqp rabbitmq-exchange

  1. 允许的消息类型有哪些(字符串、字节、整数等)?
  2. 消息的最大大小是多少?
  3. 队列和交换器的最大数量是多少?

最佳答案

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

    • 您发送的内容可以与字节串相互转换
    • 消费者确切地知道它正在获取什么以及如何将其转换为原始对象

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

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

    您可能还想了解他们的绩效衡量标准: 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

关于rabbitmq - 消息、队列和交换器有哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18353898/

相关文章:

javascript - 如何在 C++ 内的 Google Native Client 中获取数组中值的总和?

docker - 如何在 docker-compose 中将 Flower 连接到代理 RabbitMQ

asp.net - 在RabbitMq的消息监听器中获取queueName

c - C中使用消息队列的IPC机制

c# - IPC——消息队列

node.js - socket.io 私信

android - 如何将数据从网站服务器发送到Android应用程序

java - Apache camel,RabbitMQ 如何发送消息/对象

c# - Rabbitmq .net 实现的架构指南

java - 使用 Akka 持久邮箱进行事务消息处理