通常我使用非常简单的方法来记忆一些东西。我将在下面提供所有详细信息,但这里是 BasicProperties 字段和值的简单图片。我还尝试正确突出显示队列/服务器和应用程序上下文。
如果您希望我对其进行一些改进-只需发表一个小评论。我真正想要的是提供一些视觉关键并简化理解。
高级描述(来源 1,来源 2):
请注意 Clust ID 已被弃用,因此我将其排除在外。
- 应用程序 ID - 生成消息的应用程序的标识符。
- 内容编码- 消息内容编码
- 上下文:应用程序使用
- 值:MIME 内容编码(例如 gzip)
- 内容类型- 消息内容类型
- 上下文:应用程序使用
- 值:MIME 内容类型(例如 application/json)
- Correlation ID - 与此相关的消息,例如此消息是对什么请求的回复。鼓励应用程序使用此属性,而不是将此信息放入消息负载中。
- 传递模式- 消息是否应该持久化到磁盘?
- 上下文:队列实现使用
- 值:非持久性 (1) 或持久性 (2)
- 过期- 邮件将被删除的过期时间。expire 字段的值以毫秒为单位描述 TTL 周期。请参阅下面的详细信息。
- 标头- 任意特定于应用程序的消息标头。
- 消息 ID - 字符串形式的消息标识符。如果应用程序需要识别消息,建议他们使用此属性而不是将其放入消息负载中。
- 优先级- 消息优先级。
- ReplyTo - 其他应用程序应将响应发送到的队列名称。通常用于命名回复队列(或任何其他帮助消费者应用程序指导其响应的标识符)。鼓励应用程序使用此属性,而不是将此信息放入消息负载中。
- 时间戳- 发送消息的时刻的时间戳。
- 类型- 消息类型,例如该消息代表什么类型的事件或命令。建议由应用程序使用,而不是将此信息包含在消息负载中。
- 用户 ID - 可选用户 ID。由 RabbitMQ 针对实际连接用户名进行验证。
- 上下文:队列实现使用
- 值:应该是经过身份验证的用户。
顺便说一句,我终于设法查看了最新的服务器代码(rabbitmq-server-3.1.5),rabbit_stomp_test_util.erl 中有一个示例:
content_type = <<"text/plain">>,
content_encoding = <<"UTF-8">>,
delivery_mode = 2,
priority = 1,
correlation_id = <<"123">>,
reply_to = <<"something">>,
expiration = <<"my-expiration">>,
message_id = <<"M123">>,
timestamp = 123456,
type = <<"freshly-squeezed">>,
user_id = <<"joe">>,
app_id = <<"joe's app">>,
headers = [{<<"str">>, longstr, <<"foo">>},
{<<"int">>, longstr, <<"123">>}]
很高兴知道有人想知道所有细节。因为在可能的情况下使用众所周知的消息属性比在消息正文中放置信息要好得多。顺便说一句,基本的消息属性远非清晰和有用。我会说最好使用自定义的。
好例子(来源)
更新 - 到期字段
重要提示:过期属于队列上下文。所以消息可能会被服务器丢弃。
自述文件说以下内容:
expiration
是一个shortstr;由于 RabbitMQ 会期望这是一个编码字符串,我们将 a 转换ttl
为它的整数值的字符串表示形式。
资料来源: