RabbitMQ系列【15】AmqpAdmin使用详解

这篇具有很好参考价值的文章主要介绍了RabbitMQ系列【15】AmqpAdmin使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有道无术,术尚可求,有术无道,止于术。

前言

在之前,我们都是通过注入Bean的方式去声明交换机、队列,应用启动时去自动创建。

如果需要动态创建,比如通过接口、或者业务代码自己去操作,这个使用就需要使用RabbitMQ提供的操作接口。

如果是基于Spring Boot,则可以直接使用其提供的AmqpAdmin,其对RabbitMQ的原生接口进行了二次封装,使用起来十分方便。

AmqpAdmin接口,只有一个实现类RabbitAdmin,该接口源码如下:

public interface AmqpAdmin {
    void declareExchange(Exchange var1);

    boolean deleteExchange(String var1);

    @Nullable
    Queue declareQueue();

    @Nullable
    String declareQueue(Queue var1);

    boolean deleteQueue(String var1);

    void deleteQueue(String var1, boolean var2, boolean var3);

    void purgeQueue(String var1, boolean var2);

    int purgeQueue(String var1);

    void declareBinding(Binding var1);

    void removeBinding(Binding var1);

    @Nullable
    Properties getQueueProperties(String var1);

    @Nullable
    QueueInformation getQueueInfo(String var1);

    default void initialize() {
    }
}

可以看到接口中声明了很多交换机、队列的操作方法。使用时,只需要注入即可,Spring Boot已经帮我们做好了自动配置。

    @Autowired
    AmqpAdmin amqpAdmin;

1、查询队列信息

根据队列名称查询队列信息,可以查询当前队列消息总数、消费者数量。

        // 获取队列名称、消息计数和消费者计数
        // Properties getQueueProperties(String queueName); 获取队列信息
        Properties properties = amqpAdmin.getQueueProperties("bootQueue001");
        // QueueInformation getQueueInfo(String var1); 获取队列信息
        QueueInformation queueInformation = amqpAdmin.getQueueInfo("bootQueue001");

返回结果:
RabbitMQ系列【15】AmqpAdmin使用详解

2、声明、删除交换机

declareExchange方法声明一个交换机:

        // void declareExchange(Exchange var1); 声明一个交换机
        Exchange adminExchange = ExchangeBuilder.directExchange("adminExchange").durable(true).build();
        amqpAdmin.declareExchange(adminExchange);

deleteExchange方法根据名称删除一个交换机,并返回删除结果,如果不存在,也表示删除成功:

        // boolean deleteExchange(String var1); 删除一个交换机
        boolean deleteExchange = amqpAdmin.deleteExchange("deleteExchange");
        System.out.println("删除一个交换机:" + deleteExchange);

3、声明、删除队列

declareQueue方法声明一个队列,没有指定名称时,会生成一个随机名称:

        // Queue declareQueue(); 声明一个随机名称队列:amq.gen-9RGhmUOsu8GbhmLfPe9-KQ
        Queue queue = amqpAdmin.declareQueue();
        System.out.println("声明一个队列:" + queue.getName());

        // String declareQueue(Queue var1); 声明一个队列
        Queue declareQueue = QueueBuilder.durable("declareQueue").build();
        String s = amqpAdmin.declareQueue(declareQueue);
        System.out.println("声明一个队列:" + s);

deleteQueue方法根据名称删除一个队列,并可以指定两个参数,用于队列未被使用、为空时是否删除。

        // void deleteQueue(String queueName, unused, empty); 删除一个队列
        // 参数 queueName:队列名称
        //     unused:true表示队列未使用删除,正在使用则不删除且抛出异常。false表示必须删除,默认值false
        //     empty: true表示队列为空删除,不为空则不删除且抛出异常。false表示必须删除,默认值false
        amqpAdmin.deleteQueue("declareQueue", true, true);

purgeQueue方法删除某个队列的所有消息:

        //  int purgeQueue(String queueName); 删除某个队列的所有消息
        int r = amqpAdmin.purgeQueue("declareQueue");
        System.out.println("删除某个队列的所有消息:" + r);

        // void purgeQueue(String queueName, boolean noWait); 删除某个队列的所有消息,noWait:选择不等待清除任务完成
        amqpAdmin.purgeQueue("declareQueue", false);

4、声明、删除交换机/队列绑定关系

declareBinding声明交换机、队列绑定关系:

        // void declareBinding(Binding binding); 声明交换机、队列绑定关系
        Binding binding = BindingBuilder.bind(queue).to(adminExchange).with("declare.key").noargs();
        amqpAdmin.declareBinding(binding);

removeBinding 删除绑定关系:

        // void removeBinding(Binding var1); 删除交换机、队列绑定关系
        amqpAdmin.removeBinding(binding);

5、初始化

initialize()IOC容器中获取到所有的 ExchangeQueueBinding并初始化:

RabbitMQ系列【15】AmqpAdmin使用详解文章来源地址https://www.toymoban.com/news/detail-400515.html

到了这里,关于RabbitMQ系列【15】AmqpAdmin使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ系列(5)--使用Java实现RabbitMQ的消费者接收消息

    前言:先简单了解RabbitMQ的工作过程,方便后续开发理清思路 简略: 详细: 1、新建消费者类 效果图: 2、编写消费者消费消息的代码 例: 3、查看代码运行结果 运行代码后如果有输出生产者发送的”Hello World”信息,则证明消费者消费消息成功 4、在web页面上查看队列的消

    2024年02月06日
    浏览(40)
  • RabbitMQ系列之死信交换机的使用

      🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《RabbitMQ系列之死信交换机的使用》。🎯🎯 🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁           在我们上一期的RabbitMQ博客系列的分享中我们分

    2024年02月19日
    浏览(50)
  • 微服务学习系列15:日志框架slf4j使用和原理

    目录   前言 一、slf4j 项目Github地址: slfj4j桥接API slf4j 项目模块描述 二、slf4j-api 简单使用 代码分析  三、基础知识 外观模式 适配器模式 什么是桥接模式 什么是SPI 什么是API 四、设计分析 参考 slf4j主要是为了给Java日志访问提供一个标准、规范的API框架,其主要意义在于提

    2024年02月07日
    浏览(36)
  • IDEA使用翻译插件Translation配置有道翻译引擎—详细配置步骤

    前言 2022年10月 谷歌翻译已经不在中国了,所以IDEA配置谷歌翻译会出错。 打开idea设置 settings—》Plugins 注意:安装插件之后需 重启 一下IDEA 如果版本不对可以根据自己的版本手动安装 1.如图所示当点击 File -- Settings -- Plugins 2. 如果加载不出来,点击左下角的?图标 3.会自动跳

    2024年02月08日
    浏览(52)
  • 数据中台系列2:rabbitMQ 安装使用之 window 篇

    RabbitMQ 是一个开源的消息队列系统,是高级消息队列协议(AMQP)的标准实现,用 erlang 语言开发。 因此安装 RabbitMQ 之前要先安装好 erlang。 1、安装 erlang 到 这里 下载本机能运行的最新版 erlang 安装包。如果本机没有装过 window 的 dll 库它会自动下载安装,因为是从网上下载好

    2024年02月14日
    浏览(48)
  • RabbitMQ系列(27)--RabbitMQ使用Federation Exchange(联邦交换机)解决异地访问延迟问题

    前言: (broker北京)、(broker深圳)彼此之间相距甚远,网络延迟是一个不得不面对的问题。有一个在北京的业务(Client北京)需要连接(broker北京),向其中的交换器exchangeA发送消息,此时的网络延迟很小,(Client北京)可以迅速将消息发送至exchangeA 中,就算在开启了publisherconfirm机制或

    2024年02月13日
    浏览(66)
  • idea的Translation插件,使用有道翻译文字转语音出现TTS处理

    IDEA -- File -- Plugins -- Marketplace 中搜索 Translation 右击翻译–播放语言 1、打开host文件,地址:C:WindowsSystem32driversetchosts 2、添加 108.177.97.100 translate.googleapis.com到文件中

    2024年01月18日
    浏览(87)
  • 【MQ 系列】SpringBoot + RabbitMq 消息确认/事务机制的使用姿势

    我们知道 RabbitMq 提供了两种机制,来确保发送端的消息被 brocke 正确接收,本文将主要介绍,在消息确认和事物两种机制的场景下,发送消息的使用姿势 首先创建一个 SpringBoot 项目,用于后续的演示 springboot 版本为 2.2.1.RELEASE rabbitmq 版本为  3.7.5   依赖配置文件 pom.xml 在 a

    2024年01月18日
    浏览(43)
  • 【RabbitMQ】RabbitMQ安装与使用详解以及Spring集成

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《RabbitMQ实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一

    2024年01月20日
    浏览(40)
  • RabbitMQ使用详解

    一. 简介 ​ RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。支持消息的持久化、事务、拥塞控制、负载均衡等特性,使得RabbitMQ拥有更加广泛的应用场景。RabbitMQ跟Erlang和AMQP有关。下面简单介绍一下Erlang和AMQP。 ​ Erlang是一门动态类型的函数式编程语言,它也是

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包