[TOC]
RabbitMQ 声明队列
// 创建一个持久化 非排他的 非自动删除的队列
channel.queueDeclare(QUEUR_NAME, true, false, false, null);
queueDeclare(String queue,
boolean durable,
boolean exclusive,
boolean autoDelete,
Map<String, Object> arguments);
queue
队列名称
exclusive
是否排外的。 当设置exclusive = true
时有两个作用:
- 当连接关闭时
connection.close()
该队列会会自动删除 - 会对当前队列加锁,其他通道channel是不能访问的.如果强制访问会报异常.一般等于true的话用于一个队列只能有一个消费者来消费的场景
autoDelete
autoDelete
: 是否自动删除,当最后一个消费者断开连接之后队列是否自动被删除,可以通过RabbitMQ Management
,查看某个队列的消费者数量,当consumers = 0
时队列就会自动删除
durable
是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq
重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang
自带的Mnesia
数据库中,当rabbitmq
重启之后会读取该数据库
网友评论