我是靠谱客的博主 大力爆米花,最近开发中收集的这篇文章主要介绍Spring整合RabbitMQ-01-RabbitAdmin使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • RabbitAdmin
      • 使用
    • 代码示例
      • RabbitConfig
      • RabbitConfigTest

RabbitAdmin

使用

  1. autoStartup 必须要设为 true ,否则Spring容器不会加载RabbitAdmin类
  2. RabbitAdmin底层实现就是从Spring容器中获取Exchange,Binding,RoutingKey以及Queue@Bean申明
  3. RabbitTemplate的execute方法执行对应的申明,修改,删除等一系列RabbitMQ基础功能操作

代码示例

RabbitConfig

package com.wyg.rabbitmq.springamqp;

import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RabbitAdmin
 * 
 * @author wyg0405@gmail.com
 * @date 2019-11-25 15:11
 * @since JDK1.8
 * @version V1.0
 */

@Configuration
public class RabbitConfig {

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
        cachingConnectionFactory.setAddresses("localhost:5672");
        cachingConnectionFactory.setUsername("guest");
        cachingConnectionFactory.setPassword("guest");
        cachingConnectionFactory.setVirtualHost("/");
        return cachingConnectionFactory;
    }

    @Bean
    public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);

        /*
         *  autoStartup 必须要设为 true ,否则Spring容器不会加载RabbitAdmin类
         */
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }
}

RabbitConfigTest

package com.wyg.rabbitmq.springamqp;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitConfigTest {
    @Autowired
    RabbitAdmin rabbitAdmin;

    @Test
    public void testRabbitAdmin() {
        // 申明一个direct Exchange
        rabbitAdmin.declareExchange(new DirectExchange("testRabbitAdmin.exchage.direct", false, false));
        // 申明一个fanout Exchange
        rabbitAdmin.declareExchange(new FanoutExchange("testRabbitAdmin.exchage.fanout", false, false));
        // 申明一个topic Exchange
        rabbitAdmin.declareExchange(new TopicExchange("testRabbitAdmin.exchange.topic", false, false));

        // 申明 name 一个queue
        rabbitAdmin.declareQueue(new Queue("testRabbitAdmin.queue.direct", false, false, false));
        // 申明 name 一个queue
        rabbitAdmin.declareQueue(new Queue("testRabbitAdmin.queue.fanout", false, false, false));
        // 申明 name 一个queue
        rabbitAdmin.declareQueue(new Queue("testRabbitAdmin.queue.topic", false, false, false));

        // 绑定
        rabbitAdmin.declareBinding(new Binding("testRabbitAdmin.queue.direct", Binding.DestinationType.QUEUE,
            "testRabbitAdmin.exchage.direct", "direct.abc", null));
        // 使用BindingBuilder绑定
        rabbitAdmin.declareBinding(BindingBuilder.bind(new Queue("testRabbitAdmin.queue.topic", false, false, false))
            .to(new TopicExchange("testRabbitAdmin.exchange.topic", false, false)).with("topicKey.#"));
        
        // 清空队列,先手工插入一条数据到testRabbitAdmin.queue.fanout
        rabbitAdmin.purgeQueue("testRabbitAdmin.queue.fanout", true);

    }

}

测试结果

Exchange

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4x0VKCmf-1575207582909)(http://bit.ly/34iRwtU)]

Queue

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PFQIlvbR-1575207582911)(http://bit.ly/2OfXsyc)]

绑定关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0K8Jahq-1575207582911)(http://bit.ly/2qHsm9G)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXFLFHQZ-1575207582912)(http://bit.ly/2DfY8gx)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLfYZGgg-1575207582913)(http://bit.ly/2XIbzzr)]

最后

以上就是大力爆米花为你收集整理的Spring整合RabbitMQ-01-RabbitAdmin使用的全部内容,希望文章能够帮你解决Spring整合RabbitMQ-01-RabbitAdmin使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部