【MQ】RabbitMQ 交换器与队列

2020-10-17  本文已影响0人  greedycr7

一、Exchange 交换器

1.1 Exchange Type

生产者将消息投递到交换器,然后交换器再将消息路由到一个或者多个队列中。
RabbitMQ 定义了4种类型的交换器:

1.2 Exchange Declare

在使用交换器之前,需要先创建交换器,RabbitMQ 的 Java 客户端提供了 exchangeDeclare() 方法来声明交换器。

Exchange.DeclareOk exchangeDeclare(String exchangeName, String type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments) throws IOException;

参数说明:

返回值:

方法重载:

Exchange.DeclareOk exchangeDeclare(String exchangeName, String type) throws IOException;

Exchange.DeclareOk exchangeDeclare(String exchangeName, String type, boolean durable) throws IOException;

Exchange.DeclareOk exchangeDeclare(String exchangeName, String type, boolean durable, boolean autoDelete, Map<String, Object> arguments) throws IOException;

1.3 Exchange Delete

有创建就会有删除,RabbitMQ 的 Java 客户端提供了 exchangeDelete() 方法来删除交换器。

Exchange.DeleteOk exchangeDelete(String exchangeName) throws IOException;

Exchange.DeleteOk exchangeDelete(String exchangeName, boolean isUnused) throws IOException;

参数说明:

返回值:

1.4 检测交换器是否存在

exchangeDeclarePassive() 方法用来检测交换器是否存在。如果存在,则正常返回;如果不存在,则抛出异常 404 channel exception

Exchange.DeclareOk exchangeDeclarePassive(String exchangeName) throws IOException;

二、Queue 队列

队列在 RabbitMQ 中用来存储消息,队列通过 BindingKey 与 交换器相互绑定。

2.1 Queue Declare

exchangeDeclare() 方法相比,queueDeclare() 的重载方法少很多,只有两个重载方法:

// 不带任何参数的 queueDeclare() 方法会创建一个匿名的、非持久化的、排它的、自动删除的队列
Queue.DeclareOk queueDeclare() throws IOException;

Queue.DeclareOk queueDeclare(String queueName, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments) throws IOException;

参数说明:

返回值:

2.2 Queue Delete

与交换器一样,队列也可以删除

Queue.DeleteOk queueDelete(String queueName) throws IOException;

Queue.DeleteOk queueDelete(String queueName, boolean isUnused, boolean isEmpty) throws IOException;

参数说明:

返回值:

2.3 检测队列是否存在

Queue.DeclareOk queueDeclarePassive(String queueName) throws IOException;
上一篇 下一篇

猜你喜欢

热点阅读