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

临海做网站wordpress 插件 备忘录

临海做网站,wordpress 插件 备忘录,个人适合网站类型,珠海网站艰涩和在我们开发分布式系统的过程中#xff0c;RabbitMQ这样的消息队列无疑是实现微服务间通信的利器。然而#xff0c;消息处理失败在所难免。当我们面临消费消息失败的情况时#xff0c;该如何应对呢#xff1f;在这篇博客中#xff0c;我将带你深入探讨RabbitMQ消费者的消息…在我们开发分布式系统的过程中RabbitMQ这样的消息队列无疑是实现微服务间通信的利器。然而消息处理失败在所难免。当我们面临消费消息失败的情况时该如何应对呢在这篇博客中我将带你深入探讨RabbitMQ消费者的消息失败处理策略。 消息处理失败的挑战 在现实世界中消息处理失败的情况多种多样比如网络波动、服务宕机、数据库连接超时等等。如果简单地丢弃失败的消息可能会对系统造成不可逆转的影响尤其是对那些对消息可靠性要求高的场景。例如 金融交易系统每一笔交易消息都必须被处理丢失一笔就可能造成巨大的损失。订单处理系统每一个订单消息都必须被确认任何消息丢失都可能导致客户不满。 在这些场景下我们需要一种更可靠的方式来处理消费失败的消息。 Spring 提供的解决方案 为了更好地管理消息处理失败的场景Spring AMQP 提供了一个名为 MessageRecovery 的接口允许我们自定义消息重试耗尽后的处理策略。它有以下三种实现 RejectAndDontRequeueRecoverer当消息重试耗尽后直接拒绝并丢弃消息。这是默认策略。虽然简单但可能不适用于需要保证消息处理的场景。 ImmediateRequeueMessageRecoverer在重试耗尽后将消息重新放入队列等待下一次消费。这种方法会一直重试直到消息处理成功可能会导致消息队列堵塞但概率较低。 RepublishMessageRecoverer在重试耗尽后将失败的消息发送到一个专门的交换机以便后续进行集中处理。 选择优雅的解决方案RepublishMessageRecoverer 在处理高可靠性消息时RepublishMessageRecoverer 是一个非常优雅的解决方案。它不仅避免了简单丢弃消息的问题还提供了后续处理的灵活性。具体的实现思路如下 失败消息再投递当消费者处理消息失败并达到最大重试次数时将失败的消息重新投递到一个专门的异常交换机。 集中处理异常消息将所有失败消息存入一个专门的异常队列中定期由专人处理。这种方式不仅能及时发现问题还能对消息进行后续分析和补偿。 异常消息告警通过监控系统对异常队列进行监控及时发送告警信息方便运维人员快速响应。 实现代码示例 下面是一个使用 Spring AMQP 实现 FanoutExchange 的代码示例其中包含了消息队列和交换机的配置 /*** author xxxxxx* since 2024/8/2*/ Configuration public class FanoutConfiguration {Beanpublic FanoutExchange fanoutExchange() {// 创建一个FanoutExchangereturn ExchangeBuilder.fanoutExchange(hmall.fanout).build();}Beanpublic Queue fanoutQueue1() {// 创建一个持久化的队列fanout.queue1return QueueBuilder.durable(fanout.queue1).build();}Beanpublic Binding fanoutQueue1Binding(Queue fanoutQueue1, FanoutExchange fanoutExchange) {// 将fanout.queue1队列绑定到fanoutExchangereturn BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}Beanpublic Queue fanoutQueue2() {// 创建一个持久化的队列fanout.queue2return QueueBuilder.durable(fanout.queue2).build();}Beanpublic Binding fanoutQueue2Binding(Queue fanoutQueue2, FanoutExchange fanoutExchange) {// 将fanout.queue2队列绑定到fanoutExchangereturn BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);} }消息监听器配置详解 为了确保消息在消费过程中的可靠性RabbitMQ 消费者的监听器配置至关重要。以下是你在 application.yml 中对监听器的配置 listener:simple:prefetch: 1 # 每次只能获取一条消息处理完成才能获取下一个消息acknowledge-mode: auto # 自动确认模式retry:enabled: true # 启用重试机制prefetch: 1该参数指定了 RabbitMQ 消费者在确认acknowledge前可接受的最大消息数量。设置为 1 意味着消费者在处理完一条消息之前不会获取下一条消息。这种方式可以确保每个消息都是单独处理的有助于提高系统的稳定性尤其是在消息处理时间不均匀的情况下。 acknowledge-mode: auto自动确认模式。在这种模式下当消息成功处理后会自动发送一个确认信号给 RabbitMQ以表示消息已被成功消费。这样做的好处是简化了代码逻辑但在某些场景下可能需要手动确认以获得更高的控制。 retry.enabled: true开启消息重试机制。这在处理临时故障如网络波动、数据库连接失败时非常有用确保消息有多次处理机会。 小结 在RabbitMQ消费者消费消息的场景中合理的失败处理策略不仅可以提升系统的可靠性还能有效降低消息丢失带来的业务风险。通过使用Spring AMQP提供的 RepublishMessageRecoverer我们可以更优雅地应对消息处理失败的情况并在实际业务场景中应用这一策略来提升系统的健壮性。
http://www.hkea.cn/news/14397976/

相关文章:

  • 做网站要找本地的吗北京ui培训机构排行
  • 烟台网站推广排名本地app开发公司
  • 红色网站 后台初创公司 建网站
  • 山东住房城乡建设厅官方网站发稿流程
  • 建设部网站公民服务淘宝网站建设百度百科
  • 免费做图片链接网站邀约网站怎么做请柬
  • 做的好点的外贸网站电子商务网站开发的背景
  • 青岛 网站制作公司深圳最新政策消息
  • 网页设计共享网站万网域名查询网
  • 电影网站怎么做的如何搭建aspx网站
  • 营销网站的优势是什么意思怎么注册网自己的网站吗
  • 网站开发架构企业网站优化方案范本
  • 动漫网站 设计深圳外贸网站建设
  • 北京建设网站专家有了自己的网站怎么赚钱
  • 互联网传媒 网站防城港门面做网站的
  • 泰安高端网站建设报价安阳网站建设
  • 58网站建设多少钱wordpress 模板破解
  • 手机网站建设的流程甜品网站建设策划书
  • 网站数据库模板下载广东华商网络科技有限公司
  • 上海网站建设开发哪家好什么是网络营销它与传统营销相比有何特征
  • 内江市建设教育培训官方网站南阳网站排名公司
  • 江西省建设厅网站资质升级查询网站开发最新书籍
  • 少数民族网站建设营销型网站知识
  • 科技网站建设的调研做网站一定需要虚拟主机吗
  • 网站建设系统怎么样做网站需要招什么
  • 百度云搭建网站wordpress背景动画
  • 网站基础开发成本网页小游戏下载
  • 广州建设网站哪家好北京市规划网站
  • 网站建设宣传册内容提供扬中网站建设
  • 怎么制作自己的网站网页长春网站制作都找源晟27