当前位置 博文首页 > m0_51945027的博客:RabbitMQ使用教程

    m0_51945027的博客:RabbitMQ使用教程

    作者:[db:作者] 时间:2021-09-13 16:24

    1、基础性知识文档介绍
    关系RabbitMQ的一些使用场景和使用背景,基础性的概念知识,请参考这篇文章 消息队列之 RabbitMQ 。
    2、如何在MacOS 上安装RabbitMQ
    关于安装,请参考这篇文章,亲测有效。在MacOS 上安装RabbitMQ

    这里我使用的是macOS 10.13 版本,启动的时候需要找到RabbitMQ在本地的位置。

    启动rabbitmq-server

    cd /usr/local/Cellar/rabbitmq/3.7.2/sbin
    sudo ./rabbitmq-server

    打开浏览器并访问:http://localhost:15672/,并使用默认用户guest登录,密码也为guest。我们可以看到如下图的管理页面:

    点击Admin标签,在这里可以进行用户的管理。

    3、Springboot集成RabbitMQ
    通过在Spring Boot应用中整合RabbitMQ,并实现一个简单的发送、接收消息的例子来对RabbitMQ有一个直观的感受和理解。

    在Spring Boot中整合RabbitMQ是一件非常容易的事,因为之前我们已经介绍过Starter POMs,其中的AMQP模块就可以很好的支持RabbitMQ,下面我们就来详细说说整合过程:

    在pom.xml中引入如下依赖内容,其中spring-boot-starter-amqp用于支持RabbitMQ。

    org.springframework.boot spring-boot-starter-parent 1.3.7.RELEASE org.springframework.boot spring-boot-starter-amqp org.springframework.boot spring-boot-starter-test test 在application.properties中配置关于RabbitMQ的连接和用户信息,用户可以回到上面的安装内容,在管理页面中创建用户。

    队列配置

    发送者

    接收者

    测试类中

    运行结果:

    注意事项:

    发送者和接收者的queue name必须一致,不然不能接收。

    多个发送者和接收者,接收端仍然会均匀接收到消息。

    springboot以及完美的支持对象的发送和接收,不需要格外的配置。

    //发送者
    public void send(User user) {
    System.out.println("Sender object: " + user.toString());
    this.rabbitTemplate.convertAndSend(“object”, user);
    }

    //接收者
    @RabbitHandler
    public void process(User user) {
    System.out.println("Receiver object : " + user);
    }
    Topic Exchange

    topic 是RabbitMQ中最灵活的一种方式,可以根据routing_key自由的绑定不同的队列。 首先对topic规则配置,这里使用两个队列来测试

    使用queueMessages同时匹配两个队列,queueMessage只匹配”topic.message”队列

    发送send1会匹配到topic.#和topic.message 两个Receiver都可以收到消息,发送send2只有topic.#可以匹配所有只有Receiver2监听到消息

    接收者

    Fanout Exchange

    Fanout 就是我们熟悉的广播模式或者订阅模式,给Fanout交换机发送消息,绑定了这个交换机的所有队列都收到这个消息。

    这里使用了A、B、C三个队列绑定到Fanout交换机上面,发送端的routing_key写任何字符都会被忽略:

    发送者

    接收者

    结果如下:

    结果说明,绑定到fanout交换机上面的队列都收到了消息

    cs