rabbit mq 配置要点

rabbit mq是一款基于AMQP协议(Advanced Message Queuing Protocol - 高级消息队列协议)的消息队列。
生产者与消费者之间是通过Broker建立连接,在实际的项目中,他们是通过exchange和queue联系在一起的
rabbitmq工作原理图
生产者发送消息流程:
1、生产者和Broker建立TCP连接;
2、生产者和Broker建立通道;
3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发;
4、Exchange将消息转发到指定的Queue(队列)。

消费者接收消息流程:
1、消费者和Broker建立TCP连接;
2、消费者和Broker建立通道;
3、消费者监听指定的Queue(队列);
4、当有消息到达Queue时Broker默认将消息推送给消费者;
5、消费者接收到消息;
6、ack回复。

Exchange 配置细节
在这里插入图片描述
虚拟机和名字可以自行勾选与命名;
路由type的模式选择
直接交换器(Direct Exchange): 直接交换器是最简单的交换器类型,它将消息路由到与消息中的路由键(routing key)完全匹配的队列。在创建绑定时,需要指定队列和交换器之间的路由键。

主题交换器(Topic Exchange): 主题交换器根据通配符匹配规则将消息路由到一个或多个队列。通配符可以使用 *(匹配一个单词)和 #(匹配零个或多个单词)。生产者在发送消息时指定一个路由键,交换器根据绑定的路由键和主题规则将消息路由到相应的队列。

扇形交换器(Fanout Exchange): 扇形交换器将消息广播到所有绑定到该交换器的队列中。它忽略路由键,只需将消息发送到与交换器绑定的所有队列即可。Fanout Exchange也就是我们通常说的广播或者发布与订阅模式。

队列Queue的配置
在这里插入图片描述

class(经典)队列和Quorum(仲裁)队列对比

Quorum是基于Raft(多数确认)一致性协议实现的一种新型的分布式消息队列,他实现了持久化,多备份的FIFO队列,主要就是针对RabbitMQ的镜像模式设计的。简单理解就是quorum队列中的消息需要有集群中多半节点同意确认后,才会写入到队列中。这种队列类似于RocketMQ当中的DLedger集群。这种方式可以保证消息在集群内部不会丢失。同时,Quorum是以牺牲很多高级队列特性为代价,来进一步保证消息在分布式环境下的高可靠。
在这里插入图片描述

从官方这个比较图就能看到,Quorum队列大部分功能都是在Classic队列基础上做减法,比如Non-durable queues表示是非持久化的内存队列。Exclusivity表示独占队列,即表示队列只能由声明该队列的Connection连接来进行使用,包括队列创建、删除、收发消息等,并且独占队列会在声明该队列的Connection断开后自动删除。

其中有个特例就是这个Poison Message(有毒的消息)。所谓毒消息是指消息一直不能被消费者正常消费(可能是由于消费者失败或者消费逻辑有问题等),就会导致消息不断的重新入队,这样这些消息就成为了毒消息。这些读消息应该有保障机制进行标记并及时删除。Quorum队列会持续跟踪消息的失败投递尝试次数,并记录在"x-delivery-count"这样一个头部参数中。然后,就可以通过设置 Delivery limit参数来定制一个毒消息的删除策略。当消息的重复投递次数超过了Delivery limit参数阈值时,RabbitMQ就会删除这些毒消息。当然,如果配置了死信队列的话,就会进入对应的死信队列。

**Quorum队列更适合于 队列长期存在,并且对容错、数据安全方面的要求比低延迟、不持久等高级队列更能要求更严格的场景。**例如 电商系统的订单,引入MQ后,处理速度可以慢一点,但是订单不能丢失。

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值