一、基于Java的交换机与队列创建
我们使用消息队列,消息队列和交换机可以通过管理系统完成创建,也可以在应用程序中通过Java代码来完成创建
1.1 普通Maven项目交换机及队列创建
-
使用Java代码新建队列
//1.定义队列 (使用Java代码在MQ中新建一个队列) //参数1:定义的队列名称 //参数2:队列中的数据是否持久化(如果选择了持久化) //参数3: 是否排外(当前队列是否为当前连接私有) //参数4:自动删除(当此队列的连接数为0时,此队列会销毁(无论队列中是否还有数据)) //参数5:设置当前队列的参数 channel.queueDeclare("queue7",false,false,false,null);
-
新建交换机
//定义一个“订阅交换机” channel.exchangeDeclare("ex3", BuiltinExchangeType.FANOUT); //定义一个“路由交换机” channel.exchangeDeclare("ex4", BuiltinExchangeType.DIRECT);
-
绑定队列到交换机
//绑定队列 //参数1:队列名称 //参数2:目标交换机 //参数3:如果绑定订阅交换机参数为"",如果绑定路由交换机则表示设置队列的key channel.queueBind("queue7","ex4","k1"); channel.queueBind("queue8","ex4","k2");
1.2 SpringBoot应用中通过配置完成队列的创建
@Configuration
public class RabbitMQConfiguration {
//声明队列
@Bean
public Queue queue9(){
Queue queue9 = new Queue("queue9");
//设置队列属性
return queue9;
}
@Bean
public Queue queue10(){
Queue queue10 = new Queue("queue10");
//设置队列属性
return queue10;
}
//声明订阅模式交换机
@Bean
public FanoutExchange ex5(){
return new FanoutExchange("ex5");
}
//声明路由模式交换机
@Bean
public DirectExchange ex6(){
return new DirectExchange("ex6");
}
//绑定队列
@Bean
public Binding bindingQueue9(Queue queue9, DirectExchange ex6){
return BindingBuilder.bind(queue9).to(ex6).with("k1");
}
@Bean
public Binding bindingQueue10(Queue queue10, DirectExchange ex6){
return BindingBuilder.bind(queue10).to(ex6).with("k2");
}
}