基于Java的交换机与队列创建

一、基于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");
    }
}

原文地址:https://www.cnblogs.com/coderD/p/14263360.html