美文网首页java面试
RabbitMQ使用教程

RabbitMQ使用教程

作者: AKyS佐毅 | 来源:发表于2018-01-23 14:42 被阅读1981次

    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。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    • 在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交换机上面的队列都收到了消息


    微信扫码关注java架构,获取Java面试题和架构师相关题目和视频。

    相关文章

      网友评论

        本文标题:RabbitMQ使用教程

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