RabbitMQ入门

MQ:MessageQueue,消息队列;
MQ的作用主要有以下三个方面:
异步: 能提供系统的响应速度,吞吐量。
解耦:服务之间进行解耦,才可以减少服务之间的影响。
削峰:以稳定的系统资源应对突发的流量冲击。

常用的MQ有:
RabbitMQ,RocketMQ,Kafka等;
接下来主要学习RabbitMQ;

一:RabbitMQ集群搭建

默认的普通的集群模式:
使用Erlang语言天生具备的集群方式搭建,集群的各个节点之间只会有相同的元数据,即队列结构,而消息不会进行冗余,只存在一个节点中。消费时,如果消费的不算存有数据的节点,RabbitMQ会临时在节点之间进行数据传输,将消息从存有数据的节点传输到消费的节点。

镜像模式:
这种模式是在普通集群模式基础上的一种增强方案,官方HA高可用方案。本质的区别在于,这种模式会在镜像节点中间主动进行消息同步,而不是在客户端拉取消息时临时同步;

搭建普通集群
1.需要同步集群节点中的cookie
默认会在/var/lib/rabbitmq目录下生成一个.erlang.cookie.里面有一个字符串,我们要做的就算保证集群中的三个节点的这个cookie字符串一致。
2.将worker1的服务加入到worker2中的集群中
首先需要保证worker1上的rabbitmq服务正常,然后执行以下指令

[root@worker1 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@worker1 ...
[root@worker1 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@worker2
Clustering node rabbit@worker1 with rabbit@worker2
[root@worker1 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@worker1 ...

3.然后使用同样的方式将worker3加入到worker2中。

搭建镜像集群
在之前的基础上,就可以继续搭建镜像集群。
1.先创建一个/mirror的虚拟主机,然后再添加给对应的镜像策略:

[root@worker2 rabbitmq]# rabbitmqctl add_vhost /mirror
Adding vhost "/mirror" ...
[root@worker2 rabbitmq]# rabbitmqctl set_policy ha-all --vhost "/mirror" "^"
'{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all"}" with priority
"0" for vhost "/mirror" ...

基础使用
1.虚拟主机 virtual host

2.连接Connection

3.信道Channel:每个信道都会被分配一个唯一的ID,会在一个Connection中建立多个Channel,这样便于客户端进行多线程连接。

4.交换机Exchange

5.队列Queue:实际保存数据的最小单位。FIFO,经典队列Classic. RabbitMQ3.8中添加了Quorum队列,3.9中添加了Stream。
5.1Classic经典队列:
5.2Quorum仲裁队列:Quorum是基于Raft一致性协议实现的一种新型的分布式消息队列
5.3Stream队列:是以append-only只添加的日志来记录消息

SpringBoot集成RabbitMQ
1.引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.使用RabbitmqTemplate对象发送消息

3.使用@RabitListener注解声明消费者

RabbitMQ是一款使用Erlang语言开发的开源消息中间件,实现了AMQP(高级消息队列协议)。它具有以下特点: 1. 可靠性:支持持久化、传输确认、发布确认等机制,保证了消息的可靠性。 2. 灵活的消息分发策略:消息在进入RabbitMQ之前由交换机进行路由,可以根据不同的分发策略进行消息的分发,包括简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式等。 3. 支持集群:多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker,提高了可用性和扩展性。 4. 支持多种协议和语言客户端:RabbitMQ支持多种消息队列协议,如STOMP、MQTT等,同时也支持多种编程语言的客户端。 5. 可视化管理界面:RabbitMQ提供了一个易用的用户界面,方便用户监控和管理消息Broker。 6. 插件机制:RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。 要开始使用RabbitMQ,首先需要安装RabbitMQ并配置相关信息。在Windows系统中,可以按照官方文档的指引进行安装。在配置文件中,需要指定RabbitMQ的主机、端口、用户名和密码等信息。 参考资料: \[1\] RabbitMQ官网 \[2\] application.yml配置文件 \[3\] RabbitMQ入门指南文章 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [超详细的RabbitMQ入门](https://blog.csdn.net/Rok728/article/details/123106242)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

virtuousOne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值