美文网首页
RabbitMQ 工作模式(springboot整合)

RabbitMQ 工作模式(springboot整合)

作者: 哇包 | 来源:发表于2020-02-26 22:22 被阅读0次

RabbitMQ 是一种基于erlang语言开发的消息中间件

1.springboot整合步骤:

​ 1.1 引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

​ 1.2 编写配置文件

spring:
  rabbitmq:
    host: 192.168.2.156
    port: 5672
    username: rabbit
    password: 123456
    virtual-host: nz1905

​ 1.3 创建生产者 消费者 如下:

2.RabbitMQ的工作模式:

2.1 简单模式

编写配置类 创建队列

@Configuration
public class MyRabbitConfig {
    //创建队列
    @Bean
    public Queue getQueue(){
        return new Queue("simple_queue");
    }
}

生产者

@Component
public class MyProvider {

    @Autowired
    private RabbitTemplate rabbitTemplate;
    public void send(String message){
        //发送消息   到指定队列中
        rabbitTemplate.convertAndSend("simple_queue",message);
    }
}

消费者

@Component
public class MyConsumer {
        //监听指定的队列  发现有消息就输出
    @RabbitListener(queues = "simple_queue")
    public void process(String message){
        System.out.println("这里是消费者,接受到消息: "+message);
    }
}
2.2 广播模式(FanoutExchange)

1)生产者

生产者配置文类

@Component
public class RabbitMQConfig {
    //生产者   配置交换机
    @Bean
    public FanoutExchange getFFanoutExchange(){
        return new FanoutExchange("fanout_exchange",true,false,null);
    }
}

生产者

@Component
public class MyProvider {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    public void send(String message){
      //向指定的交换机  发送消息
        rabbitTemplate.convertAndSend("fanout_exchange","",message);
    }

}
  1. 消费者

消费者配置类

@Configuration
public class RabbitMQConfig {

    //创建消费者队列
    @Bean
    public Queue getQueue(){
        return new Queue("fanout_queue");
    }

    //消费者交换机  与生产者交换机保持一致
    @Bean
    public FanoutExchange getFFanoutExchange(){
        return new FanoutExchange("fanout_exchange",true,false,null);
    }

    //交换机绑定队列
    @Bean
    public Binding getBinding(Queue queue, FanoutExchange exchange){
        return BindingBuilder.bind(queue).to(exchange);
    }
}

消费者

@Component
public class MyConsumer {
    @RabbitListener(queues = "fanout_queue")
    public void process(String message){
        System.out.println("这里是消费者,接受到的消息是:"+message);
    }
}

2.3 路由模式(DirectExchange)

1)生产者 配置类

@Component
public class RabbitMQConfig {

    //生产者   配置交换机   注意:交换机模式为  DirectExchange
    @Bean
    public DirectExchange getFFanoutExchange(){
        return new DirectExchange("direct_exchange",true,false,null);
    }
}


生产者

@Component
public class MyProvider2 {

    @Autowired
    private RabbitTemplate rabbitTemplate;
    
    public void send(String message){
      //cat  指定路由
        rabbitTemplate.convertAndSend("direct_exchange","cat",message);
    }

}

2)消费者 配置类

@Configuration
public class RabbitMQConfig1 {

    //创建消费者队列
    @Bean
    public Queue getQueue(){
        return new Queue("direct_queue");
    }

    //消费者交换机  与生产者交换机保持一致  注意:交换机模式为  DirectExchange
    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("direct_exchange",true,false,null);
    }

    //交换机绑定队列
    @Bean
    public Binding getBinding(Queue queue, DirectExchange directExchange){
        return BindingBuilder.bind(queue).to(directExchange).with("cat");
    }
}

消费者

@Component
public class MyConsumer {

    @RabbitListener(queues = "direct_queue")
    public void process(String message){
        System.out.println("这里是消费者,接受到的消息是:"+message);
    }
}

相关文章

网友评论

      本文标题:RabbitMQ 工作模式(springboot整合)

      本文链接:https://www.haomeiwen.com/subject/rjugchtx.html