RabbitMQ 概述
RabbitMQ是一个实现了 AMQP 的消息队列服务,是当前主流的消息中间件

MQ的作用 :
工作:接收并转发消息
1.异步解耦
2.流量削峰
3.消息分发
4.延迟通知
RabbitMQ 默认管理端口号15672

操作RabbitMQ 三种方式
1.通过代码来操作 5672
2.通过界面来操作 15672
3.通过命令操作 Rabbitmqctl
黄色区域的六个标签就代表六种不同角色

虚拟机类似于mysql 的 dataBase

生产者与消费者模型

生产者 会发送消息 通过connection 连接 发送消息到RabbitMQ 服务器中,交换机 就会将接收到的消息 存放到消息队列 中,消费者 就会通过connectio n连接RabbitMQ 服务器 去消费 消息队列中存放的消息
**connection:**连接,是客户端与服务器通过TCP相连接的,这个连接是消息传递的基础,负责传输客户端与服务器之间的数据和控制信息
channel:信道,通道,它是基于connection TCP,一个TCP可以有多个channel,每个channel都是独立的 虚拟连接,消息的传递和接收都是基于channl

**virtual Host :**虚拟主机,是为消息队列提供的 一种逻辑隔离手段
exchange :交换机,负责接收消息 根据特定的规则将消息 路由到一个或多个queue中
**queue:**消息队列,用于储存消息
建立连接所需要信息
1.ip
2.端口号
3.虚拟主机
4.账号
5.密码
具体实现代码如下可参考去理解
以下是生产者具体流程代码:
java
//1.建立连接
ConnectionFactory connectionFactory=new ConnectionFactory();
connectionFactory.setVirtualHost("");//虚拟主机
connectionFactory.setPort(5672);//端口号
connectionFactory.setHost("");//ip
connectionFactory.setPassword("");
connectionFactory.setUsername("");
Connection connection=connectionFactory.newConnection();//创建 连接
//2.创建 信道
Channel channel=connection.createChannel();
//3.声明 交换机(在此不创建 使用内置的交换机)
//4.声明队列
channel.queueDeclare("hello",true,false,false,null);
/**
* queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
* Map<String, Object> arguments)
* queue :队列名称
* durable:是否可持久化
* exclusive:是否独占
* autoDelete:是否自动删除
* arguments:参数
*
*/
//5.传递消息
String msg="hello,RabbitMQ";
channel.basicPublish("","hello",null,msg.getBytes());
/**
* basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
* exchange:交换机名称//此处不写使用默认的交换机
* routingKey:交换机与队列建立联系的,内置交换机🀄 routingKey与队列名称相同
* props:属性配置
* body:要发送的消息
*/
//6.释放资源
// channel.close();
// connection.close();
以下的是消费者代码
java
//1.连接
ConnectionFactory connectionFactory=new ConnectionFactory();
connectionFactory.setHost("");
connectionFactory.setUsername("");
connectionFactory.setPassword("");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("");
//2.创建chenel
Connection connection=connectionFactory.newConnection();
Channel channel=connection.createChannel();
//3.声明队列
channel.queueDeclare("hello",true,false,false,null);
//4.消费消息
DefaultConsumer consumer=new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
// super.handleDelivery(consumerTag, envelope, properties, body);
System.out.println("接收到消息"+new String(body));
}
};
channel.basicConsume("hello",true,consumer);
/**
* basicConsume(String queue, boolean autoAck, Consumer callback
* queue 队列名称
* autoAck:是否自动确认
* callback:对消息具体的执行逻辑
*
*/
//等待程序打印完毕
Thread.sleep(2000);
//5.释放资源
channel.close();
connection.close();
根据以上代码结合RabbitMQ界面化操作 ,可以很清晰的理解生产者与消费者模型
上述代码只是简单代码,其中一些信息 up删除了,大家复制代码时记得去补充,up自己的云服务器内容 不宜公开哈哈,希望 大家可以通过此篇博客大致了解一下 RabbitMQ是什么 具体更详细的敬请后期专栏内容