一、什么是单活模式队列
单活模式队列:为了保证消费顺序,需要只有一个实例进行按顺序消费,其他实例仅提供日常对外服务,不进行消 息消费。当唯一消费实例无法消费或掉线时,会自动开启下一个消费者进行消费,保证多个实例消费者中仅有一个正常消费,其他作为备选。
二、如何配置
根据项目依赖,三选一
HashMap<String,Object> args = new HashMap<String,Object>();
args.put("x-single-active-consumer", true);
......
//创建Queue
channel.queueDeclare(queueName, true, false, false, args);
//表示队列是否是单一活动消费者,true时,注册的消费组内只有一个消费者消费消息,其他被忽略,false时消息循环分发给所有消费者(默认false)
Map<String, Object> arguments = new HashMap<>(2);
arguments.put("x-single-active-consumer", true);
amqpAdmin.declareQueue(new Queue("aaa", true,false,false,arguments));
Map<String, Object> arguments = new HashMap<>(2);
arguments.put("x-single-active-consumer", true);
return new Queue("singActive", true, false, false, arguments);
启动应用后,查看控制台
文章来源:https://www.toymoban.com/news/detail-672203.html
三、其它参数扩展
(1)x-message-ttl:消息的过期时间,单位:毫秒;
(2)x-expires:队列过期时间,队列在多长时间未被访问将被删除,单位:毫秒;
(3)x-max-length:队列最大长度,超过该最大值,则将从队列头部开始删除消息;
(4)x-max-length-bytes:队列消息内容占用最大空间,受限于内存大小,超过该阈值则从队列头部开始删除消息;
(5)x-overflow:设置队列溢出行为。这决定了当达到队列的最大长度时消息会发生什么。有效值是drop-head、reject-publish或reject-publish-dlx。仲裁队列类型仅支持drop-head;
(6)x-dead-letter-exchange:死信交换器名称,过期或被删除(因队列长度超长或因空间超出阈值)的消息可指定发送到该交换器中;
(7)x-dead-letter-routing-key:死信消息路由键,在消息发送到死信交换器时会使用该路由键,如果不设置,则使用消息的原来的路由键值
(8)x-single-active-consumer:表示队列是否是单一活动消费者,true时,注册的消费组内只有一个消费者消费消息,其他被忽略,false时消息循环分发给所有消费者(默认false)
(9)x-max-priority:队列要支持的最大优先级数;如果未设置,队列将不支持消息优先级;
(10)x-queue-mode(Lazy mode):将队列设置为延迟模式,在磁盘上保留尽可能多的消息,以减少RAM的使用;如果未设置,队列将保留内存缓存以尽可能快地传递消息;
四、注意事项
如当前配置的单活队列已经存在,需要删除后,重新配置。文章来源地址https://www.toymoban.com/news/detail-672203.html
到了这里,关于RabbitMQ配置单活模式队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!