queueDeclare
queueDeclare 有两个重载方法
-
Queue.DeclareOk
queueDec1are()
throws IOException;
第一种不带任何参数的queueDeclare 方法默认创建一个由RabbitMQ 命名的(类似这种amq.gen-LhQzlgv3GhDOv8PIDabOXA 名称,这种队列也称之为匿名队列〉、排他的、自动删除的、非持久化的队列。 -
Queue.DeclareOk queueDeclare
(String queue , boolean durable , boolean exclusive,boolean autoDelete, Map<String,Object> arguments) throws IOException;
第二种方法参数详解:
-
queue :队列的
名称
-
durable :设置是否
持久化
。为true 则设置队列为持久化。持久化的队列会存盘,在服务器重启的时候可以保证不丢失相关信息 -
exclusive :设置是否
排他
(独占队列)。为true 则设置队列为排他的。如果一个队列被声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除。这里需要注意
三点
:- 排他队列是基于连接( Connection) 可见的,同一个连接的不同信道(Channel)是可以同时访问同一连接创建的排他队列;
- "首次"是指如果一个连接己经声明了一个排他队列,其他连接是不允许建立同名的排他队列的,这个与普通队列不同:
- 即使该队列是持久化的,一旦连接关闭或者客户端退出,该排他队列都会被自动删除,这种队列适用于一个客户端同时发送和读取消息的应用场景
-
autoDelete :设置是否
自动删除
,当最后一个监听被移除后,自动删除队列;也就是说至少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除 -
arguments :设置队列的一些其他参数;
queueBind
在之前的代码样例种我们能看到queueBind这个方法,它的主要作用是将交换机和队列进行绑定;我们主要讲解其两个构造方法的参数详解
Queue.BindOk queueBind
(String queue , String exchange , String routingKey)Queue.BindOk queueBind
(String queue , String exchange , String routingKey , Map<String, Object> arguments)
方法中涉及的参数详解:
- queue :声明的队列名称
- exchange : 声明的交换器名称
- routingKey :用来绑定队列和交换器的路由键
- argument :定义绑定的一些参数
- queueUnbind
同理既有绑定
操作也必然有解绑
操作,方法如下,参数和绑定都是一样的裂解,不再码字了~
Queue.BindOk queueUnBind
(String queue , String exchange , String routingKey)Queue.BindOk queueUnBind
(String queue , String exchange , String routingKey , Map<String, Object> arguments)