消息标准化可以减少开发人员重复使用的痛苦,所以 RabbitMQ 对消息进行了如下标准化:
按照 AMQP 的协议单个最大的消息大小为 16EB(2 的 64 次方),但是 RabbitMQ 将消息大小限定为 2GB(2 的 31 次方)。
消息的属性 - 图1
消息的属性 - 图2
在发送消息时,我们还可以对消息的属性做更细微的控制,比如构建 Request-Response 模式.

消息存活时间


当队列消息的 TTL 和消息 TTL 都被设置,时间短的 TTL 设置生效。
如果将一个过期消息发送给 RabbitMQ,该消息不会路由到任何队列,而是直接丢弃。
为消息设置 TTL 有一个问题:RabbitMQ 只对处于队头的消息判断是否过期(即不会扫描队列),所以,很可能队列中已存在死消息,但是队列并不知情。这会影响队列统计数据的正确性,妨碍队列及时释放资源。

消息的持久化

默认情况下,队列和交换器在服务器重启后都会消失,消息当然也是。将队列和交换器的 durable 属性设为 true,缺省为 false,但是消息要持久化还
不够,还需要将消息在发布前,将投递模式设置为 2。消息要持久化,必须要有持久化的队列、交换器和投递模式都为 2。
消息属性的设置方法,包括如何将消息的持久化

应用程序的类型和版本号

消息的属性 - 图3

Request-Response 模式

我们前面的学习模式中都是一方负责发送消息而另外一方负责处理。而我们实际中的很多应用相当于一种一应一答的过程,需要双方都能给对方发送消息。于是请求-应答的这种通信方式也很重要。它也应用的很普遍。
消息的属性 - 图4
消息的属性 - 图5
消息的属性 - 图6
消息的属性 - 图7