RabbitMq
文章平均质量分 61
朝阳前的黑暗
这个作者很懒,什么都没留下…
展开
-
RabbitMQ消费端限流
MQ三大主要功能:削峰、异步、解耦,这章主要是讲削峰,可以通过MQ消费端限流来实现。 消费端限流主要是为了保证消费端的服务稳定性,防止超过消费端负载,将服务打挂,卡死。 rabbitmq提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(给channel或者consume设置Qos值)未被确认前,不进行消费新消息。 使用: 1.在消费端,通过channel.basicQos方法进行设置 2.关闭自动ACK 测试 生产端: package com.vivo.demo转载 2021-01-19 14:57:37 · 466 阅读 · 0 评论 -
SpringBoot @Rabbitlistener重试机制 当retry 次数超过max-attempts 时的处理
原生rabbitMQ可以定义连接工厂。在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些消息进行处理。不像rocketMq自带重试次数。 springboot的里spring-rabbit中自带的retry功能。 spring: rabbitmq: listener: simple: acknowledge-mode: auto # 自动ack retry: e..原创 2021-01-19 14:43:56 · 7387 阅读 · 4 评论 -
RabbitMq TTL 队列过期时间长的消息阻塞后面过期时间短的消息
利用RabbitMq的TTL time-to-live 来实现延时消费。 延时时间设置到每条消息上的。而不是给队列的。 实现方式为消息存活时间为动态用户页面可配置的。 这就导致了一个问题: 先用一条消息的存活时间是1天。后面又进了一条消息存活时间是1小时。 结果一小时到了,发现这条消息并没有被转发到消费延时过期消息的队列。 原因是尽管ttl是设给每条消息的。但是本质上,所有延时消息都还在一个队列里,对它过期时间的检测也是从头部开始的。 它不会检测每一条消息是否过期。而是顺序检测。 如果.原创 2020-12-07 10:01:57 · 1666 阅读 · 3 评论