RabbitMQ简单介绍
- RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用,RabbitMQ是实现AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件的一种,主要是为了实现系统之间的双向解耦而实现的,下面的介绍都是基于windows安装与测试的,具体的介绍可以参考RabbitMQ官网:http://www.rabbitmq.com
RabbitMQ安装
-
RabbitMQ windows安装:
- 安装RabbitMQ需要安装erlang,可以在Erlang官网下载:http://www.erlang.org/
- 安装rabbitmq-server,下载地址:http://www.rabbitmq.com/download.html
-
安装完成后,需要开启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)
-
如图:
-
消息的发送者如下:
-
消息消费者:
-
测试结果如下(注意需要先启动Provider,否则有可能找不到队列):
-
如图:
-
工作模式:
-
如图:
-
发送端:
- 接收端:
-
接收端A
-
接收端B:
-
接收端A
-
如图:
-
发布与订阅模式:
-
如图:
-
发送端:
- 接收端:
-
消费A:
-
消费B:
-
消费A:
-
如图:
-
路由模式:
-
如图:
-
发送端:
- 接收端:
-
接收者A:
-
接收者B:
-
接收者A:
- 接收端:
-
如图:
-
主题模式:
-
如图:
-
提供者:
- 消费端:
-
消费端A:
-
消费端B:
-
消费端A:
-
如图:
第一次需要先启动提供端,否则会出现找不到交换机或队列的异常情况
代码地址:https://github.com/duanjunhua/spring-boot/tree/master/rabbitmq