当前位置: 首页 > news >正文

万网的网站建设好吗百度资源共享

万网的网站建设好吗,百度资源共享,公司网站建设属于什么职位,做的网站怎么发布到网上1. 消费者确认机制 没有ack,mq就会一直保留消息。 spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack2. 失败重试机制 当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者。…

在这里插入图片描述
在这里插入图片描述

1. 消费者确认机制

没有ack,mq就会一直保留消息。

spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack

2. 失败重试机制

当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者。如果消费者再次执行依然出错,消息会再次requeue到队列,再次投递,直到消息处理成功为止。
极端情况就是消费者一直无法执行成功,那么消息requeue就会无限循环,导致mq的消息处理飙升,带来不必要的压力。

spring:rabbitmq:listener:simple:retry:enabled: true # 开启消费者失败重试initial-interval: 1000ms # 初识的失败等待时长为1秒multiplier: 1 # 失败的等待时长倍数,下次等待时长 = multiplier * last-intervalmax-attempts: 3 # 最大重试次数stateless: true # true无状态;false有状态。如果业务中包含事务,这里改为false

重启consumer服务,重复之前的测试。可以发现:

  • 消费者在失败后消息没有重新回到MQ无限重新投递,而是在本地重试了3次
  • 本地重试3次以后,抛出了AmqpRejectAndDontRequeueException异常。查看RabbitMQ控制台,发现消息被删除了,说明最后SpringAMQP返回的是reject

结论:

  • 开启本地重试时,消息处理过程中抛出异常,不会requeue到队列,而是在消费者本地重试
  • 重试达到最大次数后,Spring会返回reject,消息会被丢弃

3. 失败处理策略

在之前的测试中,本地测试达到最大重试次数后,消息会被丢弃。这在某些对于消息可靠性要求较高的业务场景下,显然不太合适了。
因此Spring允许我们自定义重试次数耗尽后的消息处理策略,这个策略是由MessageRecovery接口来定义的,它有3个不同实现:

  • RejectAndDontRequeueRecoverer:重试耗尽后,直接reject,丢弃消息。默认就是这种方式
  • ImmediateRequeueMessageRecoverer:重试耗尽后,返回nack,消息重新入队
  • RepublishMessageRecoverer:重试耗尽后,将失败消息投递到指定的交换机

比较优雅的一种处理方案是RepublishMessageRecoverer,失败后将消息投递到一个指定的,专门存放异常消息的队列,后续由人工集中处理。
在这里插入图片描述
代码:

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.retry.MessageRecoverer;
import org.springframework.amqp.rabbit.retry.RepublishMessageRecoverer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@ConditionalOnProperty(name = "spring.rabbitmq.listener.simple.retry.enabled", havingValue = "true")
public class ErrorMessageConfiguration {
//    @RabbitListener(bindings = @QueueBinding(
//            value = @Queue(name = "error.queue"),
//            exchange = @Exchange(name = "error.direct", type = ExchangeTypes.DIRECT),
//            key = {"error"}
//    ))
//    public void bings(Object msg){
//        System.out.println("异常"+msg.toString());
//    }@Beanpublic DirectExchange errorMessageExchange(){return new DirectExchange("error.direct");}@Beanpublic Queue errorQueue(){return new Queue("error.queue", true);}@Beanpublic Binding errorBinding(Queue errorQueue, DirectExchange errorMessageExchange){return BindingBuilder.bind(errorQueue).to(errorMessageExchange).with("error");}@Beanpublic MessageRecoverer messageRecoverer(RabbitTemplate rabbitTemplate) {return new RepublishMessageRecoverer(rabbitTemplate, "error.direct", "error");}
}
http://www.khdw.cn/news/53964.html

相关文章:

  • 深圳网站建设伪静态 报价 jsp 语言品牌策划是做什么的
  • 传奇私服广告网站怎么做深圳做seo有哪些公司
  • 网站如何做谷歌推广百度认证官网申请
  • 工业设计公司取名合肥百度快速排名优化
  • wordpress网站会员太多关键词排名查询网站
  • 网站设计制作靠谱公司灰色关键词排名代做
  • 服务器网站管理软件抖音seo怎么收费
  • 微信怎么做公众号搜索引擎优化与关键词的关系
  • 中淼建设工程有限公司网站东莞网络优化公司
  • 唐山乾正建设工程材料检测公司网站西安网约车平台
  • 做h5的网站有哪些百度关键词排名突然消失了
  • 深圳网站建设 cms免费的seo教程
  • 石家庄自适应网站建设外链网站是什么
  • 网络规划设计师视频优化关键词排名
  • 做网站确定什么主题好成都计算机培训机构排名前十
  • 做商品推广有那些网站放单平台
  • APP网站开发联系电话网络广告的特点
  • 建设网站为赌博网站做广告广告营销推广方案
  • 无烟锅网站规划与建设磁力岛引擎
  • 安卓手机app开发教程宿州百度seo排名软件
  • 哪家企业网站建设好友情链接软件
  • 简约大方自助建站模板深圳优化公司哪家好
  • 北京网站建设公司分形科技百度关键词推广费用
  • 沉默是金歌词游戏行业seo整站优化
  • 如何用阿里云做网站网站seo搜索引擎的原理是什么
  • 网站建设期间注意事项新闻今日头条最新消息
  • 网站页面设计风格品牌营销与推广
  • 网站建设谁家好ks刷粉网站推广马上刷
  • 赣州做网站的公司有哪家免费b站推广网站2023
  • 台州网站建设模板网络舆情分析报告