RabbitMQ 基础知识 1
uwupu 啦啦啦啦啦

为队列设置arguments

1
2
3
4
channel.queueDeclare(NORMAL_QUEUE,false,false,false,new HashMap<String,Object>(){{
put("x-dead-letter-exchange",DEAD_EXCHANGE);//设置死信要送达的交换机
put("x-dead-letter-routing-key","lisi");//设置死信送达使用的RoutingKey
}});
  • 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
2
3
4
5
channel.basicPublish(
Consumer.NORMAL_EXCHANGE,
"zhangsan",
new AMQP.BasicProperties().builder().expiration("10000").build(),//设置发布消息的配置,这里设置消息过期时间10秒
message.getBytes());

SpringBoot配置方式

1
2
3
4
5
6
7
8
template.convertAndSend(
MQUtils.NORMAL_EXCHANGE,
MQUtils.NORMAL_QUEUE_1_ROUTINGKEY,
message,(msg)->{
msg.getMessageProperties().setExpiration("10000");
return msg;
}
);

配置列表

  • contentType:消息体编码方式,如application/json
  • contentEncoding:消息体的字符集,如UTF-8
  • deliveryMode:消息持久化,1表示持久化,0表示不持久化。
  • priority:消息的优先级,默认可以为0-9的整数
  • correlationId:关联Id,用于关联RPC请求和响应
  • replyTo:指定回复的队列名称
  • expiration:过期时间,单位毫秒
    • 若与为队列设置的消息过期时间ttl同时存在,则以值较小的那个为准。
  • messageId:消息Id
  • headers:存储自定义键值对,可以在不同服务之间传递消息
  • 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:镜像模式的参数
 评论