Java创建队列与交换机
一、普通Maven项目
//1. 声明队列-HelloWorld
//参数1:queue - 指定队列的名称
//参数2:durable - 当前队列是否需要持久化(true)
//参数3:exclusive - 是否排外(conn.close() - 当前队列会被自动删除,当前队列只能被一个消费者消费)
//参数4:autoDelete - 如果这个队列没有消费者在消费,队列自动删除
//参数5:arguments - 指定当前队列的其他信息
channel.queueDeclare("HelloWorld",true,false,false,null);
//2. 创建exchange - 绑定某一个队列
//参数1: exchange的名称
//参数2: 指定exchange的类型 FANOUT - pubsub , DIRECT - Routing , TOPIC - Topics
channel.exchangeDeclare("pubsub-exchange", BuiltinExchangeType.FANOUT);
channel.queueBind("pubsub-queue1","pubsub-exchange","");
channel.queueBind("pubsub-queue2","pubsub-exchange","");
二、SpringBoot Java配置管理
@Configuration
public class RabbitMQConfiguration {
//声明队列
@Bean
public Queue queue9() {
return new Queue("queue9");
}
@Bean
public Queue queue10() {
return new Queue("queue10");
}
//声明交换机, fanout类型
@Bean
public FanoutExchange fanoutExchange() {
FanoutExchange fanoutExchange = new FanoutExchange("fanoutExchange");
return fanoutExchange;
}
//明交换机, direct类型
@Bean
public DirectExchange directExchange() {
DirectExchange directExchange = new DirectExchange("directExchange");
return directExchange;
}
//将队列和交换机绑定
@Bean
public Binding bindingQueue9(Queue queue9, FanoutExchange fanoutExchange) {
return BindingBuilder.bind(queue9).to(fanoutExchange);
}
//将队列和交换机绑定,并指定key
@Bean
public Binding bindingQueue10(Queue queue10, DirectExchange directExchange) {
return BindingBuilder.bind(queue10).to(directExchange).with("k1");
}
}