10-exchangeDeclare和queueDeclare

本文详细介绍了RabbitMQ中exchangeDeclare和queueDeclare的方法,包括声明交换机和队列、检查其存在性以及删除操作。exchangeDeclare用于声明交换机,根据参数决定是否持久化、自动删除等;queueDeclare用于声明队列,同样涉及持久化、排他性和自动删除等选项。此外,还提到了相应的方法用于检查交换机和队列是否存在以及删除它们。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.jianshu.com/p/ba3fa6071bd6

在使用RMQ的时候有两个非常重要的方法(基于Java客户端实现amqp-client):

  • exchangeDeclare:声明一个交换机。
  • queueDeclare:声明一个队列。

生产者和消费者都可以声明一个交换机或者队列。
如果尝试声明一个已经存在的交换机或者队列,只要声明的参数完全匹配现存的交换机或者队列,RabbitMQ 就可以什么都不做,并成功返回;如果声明的参数不匹配,则会抛出异常。

1 exchangeDeclare

1.1 声明exchange

用于声明一个交换机,函数签名如下:

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

参数说明:

  • exchange:指定交换机的名称。
  • type:指定交换机的类型(fanoutdirecttopicheaders)。
  • durable:是否持久化。如果设置为true,则rabbitmq会将exchange信息保存到磁盘,服务器重启后exchange不会丢失。
  • autoDelete:是否自动删除。如果设置为true,则当这个exchange不在被使用的时候,rabbitmq就会将它删除。
    • 自动删除的前提是:至少有一个队列或者交换机与这个交换机绑定,之后所有与这个交换机绑定的队列或者交换机都与之解绑,则这个交换机会被自动删除。 注意不能错误地把这个参数理解为:当与此交换机连接的客户端都断开时,RabbitMQ会自动删除本交换器。
  • internal:是否内置的。如果设置为true,则这个exchange就是一个内置交换机,不能直接通过客户端程序发送消息到这个交换机,只能通过交换机路由交换机的方式。
  • arguments:交换机的一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值