RabbitMQ 之Java API解析 三(队列的删除和绑定)
队列的删除
队列的删除一般用于删除不用的持久化队列,或错误创建的队列,队列的删除有三种方式
首先第一种:
queueDelete(queue)
1 2 3 4 |
@Override public AMQP.Queue.DeleteOk queueDelete(String queue) throws IOException { return queueDelete(queue, false, false); } |
看源码,没什么好说的,是对第二种方式的封装。
接下来第二种删除方式:
1 |
Queue.DeleteOk queueDelete(String queue, boolean ifUnused, boolean ifEmpty) throws IOException; |
参数很好理解
queue 队列名称
ifUnused 仅删除未被使用的队列,如果为true,还在使用则不删除
ifEmpty 仅删除空队列,如果为true 队列不为空队列则不删除
第三种队列删除方式:异步删除
1 |
void queueDeleteNoWait(String queue, boolean ifUnused, boolean ifEmpty) throws IOException; |
参数和第二种方式一样,不同的是该方式是异步的。
队列的清理
1 |
Queue.PurgeOk queuePurge(String queue) throws IOException; |
用于清空队列中的消息。
队列的绑定
队列必须绑定交换机,才能收到交换机发来的消息,而交换机往队列发消息是根据 交换机类型和 RoutingKey
消息队列的绑定方式有三种,第一种:
1 |
queueBind(queue, exchange, routingKey) |
1 2 3 4 |
@Override public AMQP.Queue.BindOk queueBind(String queue, String exchange, String routingKey) throws IOException { return queueBind(queue, exchange, routingKey, null); } |
看源码可知是对第二种绑定方式的封装
主要来看第二种方式:
1 |
Queue.BindOk queueBind(String queue, String exchange, String routingKey, Map<String, Object> arguments) throws IOException; |
queue:队列名称
exchange:交换机名称
routingKey:路由Key
arguments:暂时没用到这个
第三种方式:
1 |
void queueBindNoWait(String queue, String exchange, String routingKey, Map<String, Object> arguments) throws IOException; |
异步绑定,没什么好说的。
队列解绑
1 2 |
Queue.UnbindOk queueUnbind(String queue, String exchange, String routingKey) throws IOException; Queue.UnbindOk queueUnbind(String queue, String exchange, String routingKey, Map<String, Object> arguments) throws IOException; |
队列绑定的逆向操作,这个参照队列绑定就好啦
田培融
2019年6月28日 上午8:45
多谢