RabbitMQ 基础知识 1

为队列设置arguments
1 | channel.queueDeclare(NORMAL_QUEUE,false,false,false,new HashMap<String,Object>(){{ |
x-dead-letter-exchange:设置死信要送达的交换机x-dead-letter-routing-key:设置死信送达使用的RoutingKeyx-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/jsoncontentEncoding:消息体的字符集,如UTF-8deliveryMode:消息持久化,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:镜像模式的参数
评论
评论插件加载失败
正在加载评论插件