概述
文章目录
- RabbitAdmin
- 使用
- 代码示例
- RabbitConfig
- RabbitConfigTest
RabbitAdmin
使用
autoStartup
必须要设为true
,否则Spring容器不会加载RabbitAdmin类RabbitAdmin
底层实现就是从Spring
容器中获取Exchange
,Binding
,RoutingKey
以及Queue
的@Bean
申明- 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使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复