RabbitMQ的五种常用模式

RabbitMQ简单介绍

  • RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用,RabbitMQ是实现AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件的一种,主要是为了实现系统之间的双向解耦而实现的,下面的介绍都是基于windows安装与测试的,具体的介绍可以参考RabbitMQ官网:http://www.rabbitmq.com

RabbitMQ安装

  • RabbitMQ windows安装:

  • 安装完成后,需要开启Web后台,进入rabbitmq安装目录中的sbin目录执行如下命令并重启服务:

    rabbitmq-plugins enable rabbitmq_management
    
  • rabbitmq默认的web后台端口为15672,rabbitMQ服务端口为5672,打开后台控制(localhost:15672),输入用户名密码,默认都是guest.登录后如下
    后台控制器

rabbitMQ用户以及主机配置:

  • 在后台进入Admin选项,如下:
    用户管理
  • 将用户与密码输入,并点击Add user创建自己的用户,Tags根据需要设置,这里设置为Admin(这里user:test,pw:test),如下:
    用户创建
  • 创建完后如下:
    添加的用户
  • 设置主机,点击右侧的Virtual Host,并输入自己想要设置的主机地址,如:
    添加主机
  • 添加后点击主机进入设置主机用户,点击Clear可以移除默认的guest用户,在User下拉列表中可以选择自己创建的用户并Set permission即可,如下:
    主机权限设置
  • 添加完后可以发现虚拟主机的用户被更改,如下:
    虚拟主机配置信息

RabbitMQ的五种模式:

  • 具体可以参考官方文档:http://www.rabbitmq.com/getstarted.html

  • RabbitMQ依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>
      <groupId>com.rabbit.mq</groupId>
      <artifactId>rabbitmq</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>rabbitmq</name>
      <description>Demo project for Spring Boot</description>
      <properties>
        <java.version>1.8</java.version>
      </properties>
      <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>
      <build>
        <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </project>
    
  • rabbitMQ连接工具类:

    package com.rabbit.mq.utils;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    public class RabbitMQUtils {
    public static Connection getConnection() throws Exception {
          ConnectionFactory factory = new ConnectionFactory();
          factory.setHost("127.0.0.1");
          factory.setPort(5672);
          factory.setUsername("test");
          factory.setPassword("test");
          factory.setVirtualHost("/test");
          return factory.newConnection();
      }
    }
    
  • 一般模式(Simple)

    • 如图:
      image
    • 消息的发送者如下:
      Provider
    • 消息消费者:
      Consumer
    • 测试结果如下(注意需要先启动Provider,否则有可能找不到队列):
      result
  • 工作模式:

    • 如图:
      image
    • 发送端:
    • 接收端:
      • 接收端A
      • 接收端B:
  • 发布与订阅模式:

    • 如图:
      image
    • 发送端:
    • 接收端:
      • 消费A:
      • 消费B:
  • 路由模式:

    • 如图:
      image
    • 发送端:
      • 接收端:
        • 接收者A:
        • 接收者B:
  • 主题模式:

    • 如图:
      image
    • 提供者:
    • 消费端:
      • 消费端A:
      • 消费端B:
  • 第一次需要先启动提供端,否则会出现找不到交换机或队列的异常情况

  • 代码地址:https://github.com/duanjunhua/spring-boot/tree/master/rabbitmq

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容