rabbitmq

1、进程角色说明

  • Name Server:在消息队列RocketMQ版中提供命名服务,更新和发现Broker服务,保存broker和topic

    的路由信息,Name Server通过集群保证高可用

  • Broker: 集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度offset)。

    broker通过主备保证分片数据高可用。

2、RabbitMQ 使用哪种协议进行通信?

协议专为消息中间件设计,支持消息的可靠传输、队列管理、路由和复杂的消息分发模式,是 RabbitMQ 的核心通信标准。

9.3、接受消息

集群模式:只允许消息被消费一次,一条具体的消息不会被重复消费,默认行为

广播模式 :消息会被每个消费者同时消费

9.4、队列模式

简单队列模式

生产者直接将消息发送到队列,消费者从队列中获取消息

工作队列模式

多个消费者共享一个队列,消息按轮询(Round-Robin)或公平分发(Prefetch)策略分配。

重试队列:根据时间或异常,达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息。此时,消息队列 RocketMQ 版不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。

死信队列:

正常情况下无法被消费的消息称为死信消息

1:不会再被消费者正常消费。
2:有效期与正常消息相同,均为 3 天,3 天后会被自动删除。因此,请在死信消息产生后的 3 天内及时处理。

1、mq的发送流程

生产者 -> 交换器 -> 队列 ->消费者

2、消息怎么0丢失

怎么确保消息会发送到mq队列中

rabbitmq 有一个消息确认的开关,发送成功会返回ack为true发送成功

怎么确保路由能发送到队列中?

可以开启失败通知

怎么确保消息正确存储?

做持久化操作

怎么确保消费者接受到?

消费者可以手动ack确认

3、什么是幂等性

 消息接收端,同样的输入多次调用函数。而不影响数据

4、怎么解决消息重复发送

1、乐观锁,携带一个版本号

2、

12.2、解耦、异步、削峰是什么?

  • 解耦:解耦是指将系统中的组件或模块之间的依赖关系降低到最低程度,从而提高系统的灵活性和可维护性。
  • 异步:异步指的是操作的执行不需要立即返回结果,而是在后台进行,执行完成后再通知相关的组件或者进行后续的处理。
  • 削峰:减少高峰时期对服务器压力。

12.3、消息队列有什么缺点

  • 系统可用性降低:系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,系统也会挂。
  • 系统复杂度提高 :一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。
  • 一致性问题 :A 系统处理完了直接返回成功了,人都以为你这个请求就成功了, BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,数据就不一致了。

12.4、RabbitMQ与其他mq对比

RocketMQ是全局有序的吗?如果不是怎么做到全局有序?

答:默认一个topic有4个queue,只能做到每个queue的局部有序,不能做到全局有序,如果要做到全局有序,可以将消息发送到一个指定的queue里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值