RabbitMQ结合SpringBoot使用

1、引入spring-boot-starter-amqp

2、application.yml配置

spring:
  rabbitmq:
    host: 192.168.1.235
    username: test     #默认是guest
    password: 123456  #默认是guest
    virtual-host: /tzb #默认是/
    port: 5672  #默认是5672

3、自动配置基本原理

springboot引入spring-boot-starter-amqp后会自动给容器中配置:

连接工厂ConnectionFactory

RabbitTemplate(给RabbitMQ发送和接收消息,类似jdbcTemplate和redisTemplate)。

AmqpAdmin:RabbitMQ系统管理组件(创建交换器和队列等)

RabbitProperties封装了RabbitMQ的配置

4、代码

    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Autowired
    private AmqpAdmin amqpAdmin;

    //简单发送消息
    @Test
    public void contextLoads() {
        Map<String,String> message = new HashMap<>();
        message.put("message","HelloWorld!");
        message.put("data","第一条消息");
        rabbitTemplate.convertAndSend("test_exchange_direct","dog",message);
    }

    //简单接收消息
    @Test
    public void receive(){
        HashMap<String,String> map = (HashMap<String, String>)              rabbitTemplate.receiveAndConvert("test_queue_direct_1");
        System.out.println(map);
    }

监听队列:@RabbitListener 和@EnableRabbit开启基于注解的rabbitmq

    //监听某个队列,当队列有消息时,调用该方法 会根据类型自动封装
    @RabbitListener(queues = "test_queue_direct_1")
    public void recevie(User user){
        System.out.println(user);
    }

消息的序列化:默认是用jdk的序列化,可以自定义json序列化

@Configuration
public class MyRabbitMQConfig {

    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

AmqpAdmin的使用:

    @Test
    public void testAdmin(){
        //创建交换机
        amqpAdmin.declareExchange(new FanoutExchange("fanout_exchange"));
        //创建队列
        amqpAdmin.declareQueue(new Queue("test_queue"));
        //创建绑定规则
        amqpAdmin.declareBinding(new Binding("test_queue",Binding.DestinationType.QUEUE,"fanout_exchange","test.#",null));
    }

猜你喜欢

转载自blog.csdn.net/wangbing25307/article/details/80847736
今日推荐