AMQP消息属性详解

2019-05-14  本文已影响0人  芒果菠萝蛋炒饭

《深入RabbitMQ》读书笔记

Basic.Properties的属性

本文中对于“契约”的定义:一种确定消息格式和内容的规范。通常用来描述API、对象和系统的预定义规范。契约规范中通常包含有关发送和接收消息的精确信息,例如数据类型、格式以及各种需要遵守的条件。

content-type

tips:
  1. 应该尽量使用标准的序列化格式例如JSON、Msgpack或XML。这些格式允许使用任何编程语言编写任意的消费者应用程序,因为数据是以这些格式进行自我描述的,所以编写潜在的消费者应用程序会很容易。并且在程序外部对消息解码也更简单。
  2. 通过cintent-type属性指定序列化格式,可以更好地支持未来的消费者应用程序-----当消费者可以自动识别它们所支持的消息格式并选择性地处理消息时,那就不必担心在使用新的序列化格式并将其路由到相同的队列时会发生什么情况。

通过gzip和 content-encoding属性压缩消息大小

使用message-id和correlation-id引用消息

message-id

correlation-id

创建事件:timtstamp属性

tips:

expiration:消息自动过期

tips:

使用delvery-mode平衡速度和安全性

使用app-id和user-id验证消息来源

app-id

user-id

使用type属性获取明细

使用reply-to实现动态工作流

使用消息头定义头属性

优先级属性

tips:

不能使用的属性: cluster-id/reserved

总结

属性 类型 用途 使用建议或特殊用法
app-id short-string 应用程序 用于发布消息的应用程序
content-encoding short-string 应用程序 指定消息体是否以某种特殊方式编码,如zlib、deflate或Base64
content-type short-string 应用程序 使用mime-types指定消息体的类型
correlation-id short-string 应用程序 如果消息引用了某个其他消息或具有唯一标识的项目,那么correlation-id可以用来指定这种引用关系
delivery-mode octet RabbitMQ 值为1告诉RabbitMQ可以将消息保存在内存中;值为2表示它也应该被写入磁盘
expiration short-string RabbitMQ 用文本字符串表示的纪元时间或者UNIX时间戳,表示消息的过期时间
headers table 应用程序/RabbitMQ 一个自由格式的键值表,可以使用它来添加消息相关的附加元数据;RabbitMQ也可以基于它进行路由
message-id short-string 应用程序 唯一的标识符,例如在应用程序中可以使用uuid来标识消息
priority octet RabbitMQ 队列中标识消息的优先顺序
timestamp timestamp 应用程序 用文本字符串表示的纪元时间或者UNIX时间戳,表示消息的创建时间
type short-string 应用程序 一个文本字符串,用于表示应用程序中描述消息或有效负载的类型
user-id short-string 应用程序/RabbitMQ 一个自由格式的字符串,如果启用该属性,RabbitMQ会验证当前连接的用户,若不匹配则丢弃消息
上一篇 下一篇

猜你喜欢

热点阅读