消息中间件入门篇之 RabbitMQ 的 queue详解

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)

猜你喜欢

转载自blog.csdn.net/qq_33709508/article/details/107550444