第三章-RabbitMQ面板及环境搭建
1、RabbitMQ面板介绍
Rabbitmq安装完毕后,若是本地环境,打入:http://localhost:15672/#/
进入到MQ的控制台页面中:
可以观察到此页面涉及的各个TAB,和我们前面介绍到的rabbitMQ架构中涉及的名词 都是一致的。不再赘述。
再来到QueueTab下,
- Virtual host:该队列所在的虚拟主机
- Name:队列名称
- Features:队列的特性,如是否持久化、是否是过期队列等
- State:此队列工作状态
running:队列处于运行状态(正在创建队列、接受消息、消费消息等)
idle:队列处于空闲状态 - Ready:已经准备好的消息(还未被消费)
- Unacked:未处理的消息(被拒绝签收)
- Total:总的消息数量
- incoming:消息的每秒接收个数
- deliver / get:消息的每秒消费个数
- ack:每秒手动签收消息个数
重点对Features参数进行介绍
- D:d 是 durable 的缩写,代表这个队列中的消息支持持久化。
- AD:ad 是 autoDelete 的缩写。代表当前队列的最后一个消费者退订时被自动删除。注意:此时不管队列中是否还存在消息,队列都会删除。
- excl:是 exclusive 的缩写。代表这是一个排他队列。如果一个队列被声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除。
- TTL:是 x-message-ttl 的缩写。设置队列中的所有消息的生存周期,单位毫秒。
- Lim:说明该队列配置了 x-max-length。限定队列的消息的最大值长度。当超过设置的最大长时,RabbitMQ默认的做法是将处于队列头部的信息丢弃或放入死信队列,可以通过设置overflow的值来改变这种方式,如果overflow值设置为reject-publish,那么最近被发送的消息将被丢弃。
- Lim B:说明队列配置了 x-max-length-bytes。限定队列最大占用的空间大小, 一般受限于内存、磁盘的大小。
- DLX:说明该队列配置了 x-dead-letter-exchange。当队列消息长度大于最大长度、或者过期,将从队列中删除的消息推送到指定的交换机中。
- DLK:x-dead-letter-routing-key 的缩写,将删除的消息推送到指定交换机的指定路由键的队列中去。
- Pri:x-max-priority 的缩写,优先级队列。表明该队列支持优先级。
- Args:是 arguments 的缩写。代表该队列配置了 arguments 参数。
- Ovfl:x-overflow 的缩写。队列中的消息溢出时,如何处理这些消息。要么丢弃队列头部的消息,要么拒绝接收后面生产者发送过来的所有消息。有两个配置项:drop-head,代表丢弃队列头部的消息,默认行为;reject-publish 设置队列中的消息溢出后,该队列的行为:”拒绝接收”(所有消息)。
- ha-all:镜像队列。all 表示镜像到集群上的所有节点,ha-params 参数忽略。
- Exp:Auto Expire,是 x-expires 配置的缩写。当队列在指定的时间没有被访问(consume, basicGet, queueDeclare…)就会被删除,Features=Exp。注意这里是删除队列,不是队列中的消息。
2、开发环境搭建
我们首先还是使用使用amqp-client -java 来搭建环境及学习后面的知识,当然amqp协议下有各种各样的语言实现,我们此文使用java。
2.1 创建maven工程 pom.xml 引入jar包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.6.0</version>
</dependency>
2.2 创建工具类获取与Broker连接 RabbitCommonConfig
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @author rabbit
* @version 1.0.0
* @createTime 2022/07/27 19:39:00
*/
public class RabbitCommonConfig {
public static Connection getConnection() {
Connection connection = null;
//创建Connection工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setVirtualHost("my-test-virtual");
factory.setPassword("test");
factory.setUsername("test");
factory.setHost("127.0.0.1");
factory.setPort(5672);
//拿到连接
try {
connection = factory.newConnection();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
return connection;
}
}
2.3 创建个测试类,测试工具类可连接,即可。开发环境便搭建完成,后续即可进行rabbitmq相关工作模式的学习。
3、辅助工具
3.1 抓包工具-wireshark -前面已介绍过 Wireshark · Go Deep.
3.2 mq模拟器 -地址 :RabbitMQ Simulator
ps:模拟器使用技巧,第一次用画线的时候总连不上,可以尝试从下往上连,逆向去连。