SpringBoot 学习: SpringBoot整合RabbitMQ

创建项目
在这里插入图片描述


配置
在这里插入图片描述


在测试类中测试
在这里插入图片描述

    @Autowired
    RabbitTemplate rabbitTemplate;

    /**
     *  点对点单播
     */
    @Test
    void contextLoads() {

        Map<String,Object> map = new HashMap<>();
        map.put("msg","这是第一个消息");
        map.put("data", Arrays.asList("hello world",123,true));

        rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",map);

    }

运行测试方法,查看队列,可以看到消息发送成功
在这里插入图片描述


接收数据,消息一旦接受则在消息队列中的该消息被删除

// 接受数据,接收数据后消息队列的数据被删除
    @Test
    public void receive(){
        Object o = rabbitTemplate.receiveAndConvert("atguigu.news");//这个方法可以直接将消息转化为我们想要的对象
        System.out.println(o.getClass());
        System.out.println(o);
    }

在这里插入图片描述


将数据以json的序列化规则存入消息队列

编写一个配置类

package com.atguigu.amqp.config;

import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAMQPConfig {

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

}

Rabbit的自动配置类RabbitAutoConfiguration中,如果IOC容器有MessageConverter就是用容器中的MessageConverter
在这里插入图片描述
再次运行发送消息的方法,查看队列,消息在队列中就是以json数据保存的了
在这里插入图片描述


监听消息队列中的内容 @RabbitListener

开启基于注解的RabbitMQ
在这里插入图片描述

监听atguigu.news队列

@RabbitListener(queues = "atguigu.news")
    public void receive(Book book){
        System.out.println("atguigu.news收到消息:"+book);
    }

发送消息

rabbitTemplate.convertAndSend("exchange.fanout","",new Book("红楼梦","曹雪芹"));

控制台打印:
在这里插入图片描述


AmqpAdmin组件

在这里插入图片描述

    @Autowired
    AmqpAdmin amqpAdmin;

    @Test
    public void createExchange(){

        // 1.创建DirectExchange对象
        DirectExchange directExchange = new DirectExchange("amqpadmin.exchange");

        // 2.在RabbitMQ中创建DirectExchange交换器
        amqpAdmin.declareExchange(directExchange);

        System.out.println("创建完成");
    }

运行测试方法,查看交换器列表,可以看到成功创建出来了在这里插入图片描述

Exchange的分类
在这里插入图片描述

创建队列:

amqpAdmin.declareQueue(new Queue("amqpadmin.queue",true));

创建绑定规则:

amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE, "amqpadmin.exchange","amqp.haha",null));

其中Binding
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值