RabbitMQ【2】常用消息属性的简单介绍

RabbitMQ【2】常用消息属性的简单介绍

(需要详细介绍的可以去看原书《深入RabbitMQ》第三章节内容)

2.1 消息组成

消息由AMQP规范中的三个低层帧类型组成:Basic.Publish方法帧、内容头帧和消息体帧。这三种帧类型按顺序一起工作,以便将消息传递到它应该去的地方并确保它们到达时完好无损(见图)

包含在消息头帧中的消息属性是一组预定义的值,这些值通过Basic.Properties数据结构进行指定(见图)。某些属性(如delivery-mode)在AMQP规范中具有明确的含义,而有些属性(如type)则没有明确的规范。

在某些情况下,RabbitMQ使用明确定义的属性来实现消息的特定行为。前面提到的delivery-mode属性就是一个例子。在将消息放入队列时,delivery-mode值将告诉RabbitMQ把消息保存在内存前是否必须先把它存储到磁盘中。

2.2 消息属性简略介绍

  • 使用content-type属性让消费者知道如何解释消息体。
    • (例如,如果你的应用程序正在发送JSON序列化的数据值,那么将content-type属性设置为application/json将允许尚待开发的消费者应用程序在收到消息时检查消息类型并对消息进行正确解码)
  • 使用content-encoding属性来指示消息体使用某种特殊的方式进行压缩或编码。
  • 填充message-id和correlation-id来唯一标识消息和消息响应,用于在工作流程中实现消息跟踪。
  • 利用timestamp属性减少消息大小,并创建一个规范定义来描述消息创建时间。
  • 使用expiration属性表明消息过期。
  • delivery-mode值将告诉RabbitMQ把消息保存在内存前是否必须先把它存储到磁盘中
  • 告诉RabbitMQ使用delivery-mode将消息写入磁盘或内存队列。
  • 使用app-id和user-id来帮助追踪出现问题的消息发布者应用程序。
  • 使用type属性来定义发布者和消费者之间的契约。
  • 使用reply-to属性实现响应消息的路由。
  • 使用headers映射表定义自由格式的属性和实现RabbitMQ路由。
posted @ 2022-07-01 16:45  libai1024  阅读(681)  评论(0编辑  收藏  举报