消息队列的相关问题

1.高可用性

       高可用性指的是 就算机器挂挂了,也还是可用。就一句话:搞个集群(这里的集群是mq本身即支持的集群,而不是机器的简单组合)可以百度一下RabbitMq的集群搭建哈

2.消息不被重复消费

        a.因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。MQ只保证消息可靠,不保证消息是否重复消费。

           可以让生产者在生产消息的时候,给每个消息带上一个唯一的ID,类似于订单id的东西。然后消费者消费的时候,先到redis里面去查一次,第一次肯定是查询不到,然后将该值存入redis中。如果查询到了,就代表是重复消费,不消费即可。

        b.如果是把消息插入到数据库中,可以利用数据库的唯一索引来保证,可以把消息的某一列设计成唯一索引。

3.消息丢失

   a.生产者丢失了消息:可以开启rabbitmq的confirm模式  一般在生产端开启。过程就是:在生产消息的时候会携带一个ID,然后你发给rabbitmmq 。它收到以后会回复你  会给你一个ack消息,没有收到的话,他会调用你的nack接口,告诉你它没接到你的消息,你可以重试。

   b.rabbitmq丢失了消息   开启rabbitmq的持久化。具体怎么开,请百度

   c.消费者丢失了消息   开启rabbitmq的ACK机制,就是消费一个消息给rabbitmq发送一个消息。

4.消息有序性

  一个queue一个consumeer,不要一个queue多个consumer。多建立一些queue而已。

5.消息满了怎么办,存不下了怎么办?

   一般就是consumer出了问题,先修复consumer,然后紧急扩容,整一个queue,扩成原来的10倍。先把线上的数据直接移到到临时的queue中。

 

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值