1. RabbitAdmin
首先导入amqp的依赖
<!--amqp的starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--rabbitmq的客户端-->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
注入RabbitAdmin
//创建一个配置类,并注入下述bean
@Bean
public ConnectionFactory connectionFactory(){
CachingConnectionFactory ConnectionFactory = new CachingConnectionFactory();
ConnectionFactory.setAddresses("localhost");
ConnectionFactory.setUsername("guest");
ConnectionFactory.setPassword("guest");
ConnectionFactory .setVirtualHost("/");
return ConnectionFactory ;
}
//方法的形参名称必须和上面的方法名保持一致,不然注入不了ConnectionFactory这个Bean
@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory ConnectionFactory ){
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory );
//必须设置为true,不然spring不能加载rabbitAdmin这个Beam
rabbitAdmin.setAutoStartup(true);
return rabbitAdmin;
}
RabbitAdmin测试代码
@Autowired
private RabbitAdmin rabbitAdmin;
@Test
public void testRabbitAdmin(){
//声明一个交换器,spring将一些交换器的设置封装在了对象的属性中
rabbitAdmin.decareExchange(new TopicExchange("test,topic",false,false));
//声明一个队列
rabbitAdmin.decareQueue(new Queue("test.topic.queue",false));
/*
声明一个绑定方式一:decareBinding(destination,destinationType,exchange,routingKey,arguments)
params:
destinhation:要绑定的队列名字
destinationType:绑定类型
exchange:要绑定的交换器名字
routingKey:绑定键
arguments:一些设置的参数,使用map封装
*/
rabbitAdmin.decareBinding(new Binding("test.topic.queue",
Binding.DestinationType.QUEUE,
"test.topic",
"test.topic.binding.#"
new HashMap