一、MQ基本介绍
MQ(message queue):本质上是个队列,遵循FIFO原则,队列中存放的是message,是一种跨进程的通信机制,用于上下游传递消息。MQ提供“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后消息发送上游只需要依赖MQ,不需要依赖其它服务。
功能1:流量消峰


功能2:应用解耦

功能3:异步处理

MQ的分类:
1.Kafka

2.RabbitMQ

RabbitMQ概念:

四大核心概念:
交换机:

队列:


六大核心模式:
1.简单模式。2.工作模式。3.发布订阅模式。4.路由模式。5.主题模式。6.发布确认模式。

RabbitMQ工作原理:

Channer:信道,发消息的通道。


二、MQ下载安装
下载:
1. 官网地址:https://www.rabbitmq.com/download.html。参考的下载地址如下:Linux下安装RabbitMQ_rabbitmq下载_零碎de記憶的博客-优快云博客
2.安装Erlang环境
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz tcp_wrappers
3.下载Erlang,方式1:找到下面网址,在网址中下载rpm文件:
el/7/erlang-22.3.4.12-1.el7.x86_64.rpm - rabbitmq/erlang · packagecloud
或者直接输入下面指令下载rpm文件:
wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-22.3.4.12-1.el7.x86_64.rpm/download.rpm
然后输入下面的命令安装已下载的安装包:
yum localinstall erlang-22.3.4.12-1.el7.x86_64.rpm
4.下载RabbitMQ,输入下面的下载
wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.13-1.el7.noarch.rpm/download.rpm
输入下面的命令进行本地安装:
yum localinstall rabbitmq-server-3.8.13-1.el7.noarch.rpm
5. 下载socat,检查是否已下载:
yum install socat -y
注意以下的操作都要在 /usr/local/software目录下查看:
6.添加开机启动RabbitMQ服务:chkconfig rabbitmq-server on。启动rabbitmq /sbin/service rabbitmq-server start。
7.查看服务状态 /sbin/service rabbitmq-server status

8.停止服务 /sbin/service rabbitmq-server stop。重新查看服务状态。

10.开启web管理界面 sudo rabbitmq-plugins enable rabbitmq_management
11.查看防火墙状态:systemctl status firewalld。关闭防火墙:systemctl stop firewalld。关闭rabbit服务器输入:sudo rabbitmqctl stop。开启rabbit服务器输入:sudo rabbitmq-server -detached。
12.在浏览器中输入地址:Linux服务器ip地址:15672,可访问web管理界面。

13.用户名guest,密码默认,但无法登陆,无权限。
14.rabbitmqctl list_users查看用户。创建账号 rabbitmqctl add_user admin 123。设置用户角色为管理员 rabbitmqctl set_user_tags admin administrator。设置用户权限 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"。

15.再经尝试可以重新登录:

三、创建Java开发环境
1.创建1个新项目,命名atguigu-rabbitmq,然后创建模块Module。GroupId可以填写:com.atguigu.rabbitmq,ArtifactId可以填rabbitmq-hello,选择quickstart:
导入依赖如下:
<dependencies>
<!--rabbitmq依赖客户端-->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
<!--操作文件流的依赖-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <!-- 根据你的需求指定版本号 -->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
在下图中,P是生产者,C是消费者。中间的框是一个队列-RabbitMQ代表使用者保留的消息缓存区。
![]()
生产者代码
public class producer {
//队列名称
public static final String QUEUE_NAME = "hello";
//发消息
public static void main( String[] args ) throws IOException, TimeoutException {
//第1步:创建一个连接工程
ConnectionFactory factory = new ConnectionFactory();
//第2步:输入工厂IP,用户名和密码——连接RabbitMQd队列
factory.setHost("192.168.182.136");
factory.setUsername("admin");
factory.setPassword("123");
//第3步:创建连接
Connection connection = factory.newConnection();
//第4步:获取信道
Channel channel = connection.createChannel();
//第5步:生成一个队列(队列名称,是否持久化,是否排他,自动删除,队列参数)
//持久化:是否存储入磁盘,默认是将消息存储在内存中
//排他:队列是否只供一个消费者消费,是否进行消息共享,true可以供多个消费者消费
//自动删除:最后一个消费者断开连接后,该队列是否自动删除
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//第6步:发消息,(交换机,路由key本次是队列名,参数,发送的消息)
String message = "hello world";
channel.basicPublish("",QUEUE_NAME,null,message.getByt

本文围绕RabbitMQ展开,介绍了MQ基本概念、功能及分类,详细说明了RabbitMQ在CentOS下的下载安装步骤。还阐述了如何创建Java开发环境,以及工作队列、消息应答、持久化与分发、发布确认、交换机和死信等相关知识和操作。
最低0.47元/天 解锁文章
7834

被折叠的 条评论
为什么被折叠?



