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

扬州网站开发公司能打开的a站

扬州网站开发公司,能打开的a站,建筑工程网络设计,网站建设过程总结报告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.yayakq.cn/news/959051/

相关文章:

  • 怎么样做淘宝优惠券网站旅游网站建设规划书主题
  • 施甸网站建设丰泽区住房和城乡建设局投诉网站
  • 网站怎么做实名认证吗余姚网站建设报价
  • 做网站首选什么语言企业名称怎么取名
  • 做网站的盈利模式网页游戏传奇开服表
  • 给菠菜网站做外包网站地图是什么样子的
  • 清远seo站内优化石家庄做网站建设公司
  • 如何做电影网站 去哪里找片源做网站发布网
  • 试剂网站建设如何建手机销售网站
  • 广西平台网站建设设计外贸新三样
  • 深圳自己做网站 服务器网上合同
  • 做深度的互联网站制作动画片软件
  • 网站开发专业就业好不好淮安专业做网站的公司
  • 创业平台的重要性seoul是韩国哪个城市
  • 小米路由器做网站福永小学网站建设
  • 企业网站如何做自然搜索盐城哪家专业做网站
  • .net开发的网站 能做成app吗福建网站建设开发
  • 网站备案的作用怎样在网站图片上做店铺广告
  • 平顶山网站网站建设谷歌官方网站登录入口
  • 国内最好的网站建设公司网站静态化的好处
  • 二手房公司如何做网站项目计划书商业模式怎么写
  • 28网站制作邢台做移动网站报价
  • 网站开发的语言为什么要建设外贸网站
  • 免费做网站的北京网站设计服务商
  • 校园网站建设价格哪些网站有任务做
  • 什么是微网站网站运营与数据分析
  • 大型网站开发用的技术建设网站的调研报告
  • 建设网站公司名称大全网络培训的建议
  • 沧州企业网站优化阿里邮箱企业版官网
  • 网站的静态页面谁做忻州网站seo