消息中间件
消息中间件
紫乾2014
这个作者很懒,什么都没留下…
展开
-
RocketMQ如何保证高可用?
消费者获取到消息之后,可以等到整个业务处理完成,再进行CONSUME_SUCCESS状态确认,如果业务处理过程中发生了异常那么就会触发broker的重试机制。当消息发送失败了,在消息重试的时候,会尽量规避上一次发送的 Broker,选择还没推送过该消息的Broker,以增大消息发送的成功率。避免用单节点或者简单的一主一从架构,可以采取多主从的架构,并且主从之间采用同步复制的方式进行数据双写。RocketMQ默认的异步刷盘,可以改成同步刷盘SYNC_FLUSH。3、生产消息的高可用。4、消费消息的高可用。原创 2022-12-11 11:34:48 · 970 阅读 · 0 评论 -
RocketMQ如何保证消费消息的幂等性?
首先mq都有回馈机制。首先得为每条消息加上一个全局唯一id。2、使用redis里面提供的setNX指令,比如对于MQ消费的场景,为了避免MQ重复消费导致数据多次被修改的问题,可以在接受到MQ的消息时,把这个消息通过setNx写入到redis里面,一旦这个消息被消费过,就不会再次消费。1、使用数据库的唯一约束实现幂等,比如对于数据插入类的场景,比如创建订单,因为订单号肯定是唯一的,所以如果是多次调用就会触发数据库的唯一约束异常,从而避免一个请求创建多个订单的问题。二、造成重复消费的原因。原创 2022-09-23 10:14:36 · 2656 阅读 · 0 评论 -
为什么要使用mq?
如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。如果使用 MQ,那么 A 系统连续发送 3 条消息到 MQ 队列中,假如耗时 5ms,A 系统从接受一个请求到返回响应给用户,总时长是 3 + 5 = 8ms。MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。.原创 2022-08-29 09:32:00 · 102 阅读 · 0 评论