Rabbmit channel.QueueDeclare参数初识

简介: 接触MQ易经有一段时间了,对QueueDeclare一直没有一个全面的认识。

接触MQ易经有一段时间了,对QueueDeclare一直没有一个全面的认识。

 

channel.QueueDeclare(name, durable, autoDelete, exclusive, args)

在debug程序时可以看到这几个参数?分别代表什么意思呢?

  • ame:队列名字
  • durable:是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库
  • autoDelete:是否自动删除队列,当最后一个消费者断开连接之后队列是否自动被删除,可以通过RabbitMQ Management,查看某个队列的消费者数量,当consumers = 0时队列就会自动删除
  • exclusive:是否排外的,有两个作用,一:当连接关闭时connection.close()该队列是否会自动删除;二:该队列是否是私有的private,如果不是排外的,可以使用两个消费者都访问同一个队列,没有任何问题,如果是排外的,会对当前队列加锁,其他通道channel是不能访问的,如果强制访问会报异常:com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=405, reply-text=RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'queue_name' in vhost '/', class-id=50, method-id=20)一般等于true的话用于一个队列只能有一个消费者来消费的场景
  • args:相关参数,目前一般为nil
public com.rabbitmq.client.AMQP.Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments) throws IOException {
        com.rabbitmq.client.AMQP.Queue.DeclareOk ok = this.delegate.queueDeclare(queue, durable, exclusive, autoDelete, arguments);
        RecordedQueue q = (new RecordedQueue(this, ok.getQueue())).durable(durable).exclusive(exclusive).autoDelete(autoDelete).arguments(arguments);
        if (queue.equals("")) {
            q.serverNamed(true);
        }
        this.recordQueue((com.rabbitmq.client.AMQP.Queue.DeclareOk)ok, q);
        return ok;
    }
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
JavaScript 前端开发
JS将两个数组和合并成数组包对象格式的方法
JS将两个数组和合并成数组包对象格式的方法
244 0
|
Linux 文件存储 网络架构
云服务器的frps配置
个人在使用云服务器的简单记录
1176 0
云服务器的frps配置
|
缓存 网络协议 测试技术
NFS挂载信息如何调整?
NFS挂载信息如何调整?
600 3
|
Java Go
go语言在 switch 语句中使用 break
go语言在 switch 语句中使用 break
369 5
|
前端开发
css动画效果(边框流光闪烁阴影效果)
css动画效果(边框流光闪烁阴影效果)
|
Linux Go API
MemoryModule内存反射DLL加载探索
MemoryModule内存反射DLL加载探索
|
SQL Oracle 关系型数据库
Hive中的DECIMAL类型
Hive中的DECIMAL类型
736 1
|
Web App开发
【视频点播】阿里云视频点播如何获取视频播放的URL
展示如何使用阿里云视频点播服务获取播放地址.
35417 0
【视频点播】阿里云视频点播如何获取视频播放的URL
|
机器学习/深度学习 Serverless 计算机视觉
交叉验证和超参数调整:如何优化你的机器学习模型(上)
交叉验证和超参数调整:如何优化你的机器学习模型
1843 0
交叉验证和超参数调整:如何优化你的机器学习模型(上)
|
算法 安全 Java
数据库如何合理生成主键:UUID、雪花算法
1.使用自增主键的弊端 首先在实际工程中我们很少用1,2,3......这样的自增主键,原因如下: 主键冲突 性能问题 安全问题 主键冲突: 比如我要跨数据库进行数据同步、或者在分布式系统中跨“分区”进行数据同步,不难想象,1,2,3......这种递增的单数字是极容易产生冲突的。
709 0