SpringBoot日记——MQ消息队列整合

Posted 碎冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot日记——MQ消息队列整合相关的知识,希望对你有一定的参考价值。

  基于第一篇文章搭建好环境以后,我们这篇文章继续介绍如何在springboot中使用RabbitMQ。

  1)、单播:添加好pom文件和自定义配置后,来看:

    @Autowired
    RabbitTemplate rabbitTemplate;

    @Test
    public void contextLoads() {

        // 对象被默认JAVA序列化发送,参数:Exchange,routingKey,消息
        rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", "瓦尔克莉");
    }

  来看看我们发送的消息是否成功了:

  如图,成功获取了~。

  同样,使用代码来直接获取:

    @Test
    public void receive() {
        // 接受数据
        Object o = rabbitTemplate.receiveAndConvert("iceoooodin.news");
        System.out.println(o.getClass());
        System.out.println(o);
    }

  另外,我们除了str类型,还是发送map、对象等等,比如:

    @Test
    public void contextLoads() {

        Map<String, Object> map = new HashMap<>();
        map.put("msg", "第一个数据");
        map.put("data", Arrays.asList("helloworld", 123, true));
        // 对象被默认JAVA序列化发送
        rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", map);
    }
@Test
    public void contextLoads() {

        // 对象被默认JAVA序列化发送
        rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", new Book("金瓶M", "em.."));
    }
public class Book {
    private String bookName;
    private String author;

    @Override
    public String toString() {
        return "Book{" +
                "bookName=\'" + bookName + \'\\\'\' +
                ", author=\'" + author + \'\\\'\' +
                \'}\';
    }

    public Book(String bookName, String author) {
        this.bookName = bookName;
        this.author = author;
    }

    public Book() {
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}
Book.java

   2)、然后我们来看广播,也就是发送一堆消息是如何处理的:

@Test
    public void sendMst() {
        rabbitTemplate.convertAndSend("exchange.fanout", "", new Book("红楼", "草 "));
    }

  如果发送的是广播,可以发现,消息会被分别发送到匹配的全部消息队列中:

  3)、我们学会发送和接收了,再看看如何创建Exchange或者Queue吧,我们创建和绑定写在了一起,根据需要自己拆:

    @Autowired
    AmqpAdmin amqpAdmin;  //这个amqpadmin是用来管理QP的,可以创建、删除等操作;

    @Test
    public void creatExchange() {
        // 创建Exchange
        amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
        System.out.println("创建exchange完成");
        // 创建Queue
        amqpAdmin.declareQueue(new Queue("amqpadmin.queue", true));
     System.out.println("创建Queue完成");
// 绑定 amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE, "amqpadmin.exchange", "amqp.haha", null)); }

   结果就懒得写了,大家自己试验看一下就知道了,到web管理界面看看是否有正确添加和绑定~

以上是关于SpringBoot日记——MQ消息队列整合的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合RabbitMQ

Springboot 整合 RabbitMQrabbitmq介绍:安装,下载,创建队列交换机,5种工作模式

SpringBoot整合RabbitMQ消息队列基本环境搭建

MQ4万字保姆教程|RabbitMQ知识点整理与Springboot整合附Demo(图文并茂)

springboot整合rabbirmq中使用mandatory参数获取匹配失败的消息!

spring boot整合activeMQ