RabbitMQ 基础知识 1

为队列设置arguments
1 | channel.queueDeclare(NORMAL_QUEUE,false,false,false,new HashMap<String,Object>(){{ |
x-dead-letter-exchange
:设置死信要送达的交换机x-dead-letter-routing-key
:设置死信送达使用的RoutingKey
x-max-length
:队列的最大长度x-message-ttl
:设置消息过期时间,单位毫秒x-max-priority
:设置队列支持的消息的优先级级数,默认为10个级数,最大允许255;x-expires
:设置队列的自动删除,单位毫秒x-queue-mode
:可以设置队列模式- 对于持久化队列,消息会被存储到磁盘中,并在内存不吃紧的情况下,在内存中创建一个备份,这个备份包含队列的部分消息;
- 默认情况下,内存中的备份会尽可能多的存储消息。
lazy
惰性队列:若设置了惰性队列,持久化队列将不在内存中设置备份,只有当被消费者消费的时候才会读入内存。classic
经典:消息会被直接保存在内存中quorum
仲裁:需要安装插件。在多个节点间复制队列,使得队列有更好的可靠性和可扩展性,但会带来一定的性能损失。
ha-mode
:集群节点的复制模式。all
:队列将复制到所有的集群节点,并且在从节点不可用时,主节点不再接收新的消息;exactly
:队列将在特定数量的节点上进行复制。ha-params
可以指定在多少个节点上进行复制,若不指定,则默认为所有节点。
nodes
:队列将复制到指定节点上,通过ha-params
指定要复制的节点。
发布消息指定配置
原生配置方式
1 | channel.basicPublish( |
SpringBoot配置方式
1 | template.convertAndSend( |
配置列表
contentType
:消息体编码方式,如application/json
contentEncoding
:消息体的字符集,如UTF-8
deliveryMode
:消息持久化,1表示持久化,0表示不持久化。priority
:消息的优先级,默认可以为0-9的整数correlationId
:关联Id,用于关联RPC请求和响应replyTo
:指定回复的队列名称expiration
:过期时间,单位毫秒- 若与为队列设置的消息过期时间
ttl
同时存在,则以值较小的那个为准。
- 若与为队列设置的消息过期时间
messageId
:消息Idheaders
:存储自定义键值对,可以在不同服务之间传递消息type
:消息类型,可以用于标识消息的目的,如”order_create”或”payment_success”等timestamp
:消息的时间戳,表示消息的创建时间userId
:标识发送消息的用户appId
:应用程序Id,标识发送消息的应用程序clusterId
:集群Id,标识所属集群
Policy配置
可以在RabbitMQ的控制台的Admin中配置Policies
配置Policy的参数
- Name:Policy的名称
- Pattern:配置队列名称的正则表达式
- 如:
^mirror
表示以mirror为前缀的队列。mirror_hello
- 如:
- Definition:一个JSON对象,包含要为队列设置的属性和选项
- message-ttl:消息过期时间
- maxlength:队列最大消息数
- ha-mode:队列镜像模式
- ha-sync-mode:队列的复制模式
- ha-params:镜像模式的参数
评论