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

甘井子区城市建设管理局网站如何做网络营销推广服务机构

甘井子区城市建设管理局网站,如何做网络营销推广服务机构,网络设计原则是什么,php的网站消费端消费异常,业务异常 与 未手动确认是不是一个场景,因为执行完业务逻辑,再确认。解决方案就一个,就是重试一定次数,然后加入死信队列。还有就是消费重新放入队列,然后重新投递给其他消费者,…

消费端消费异常,业务异常 与 未手动确认是不是一个场景,因为执行完业务逻辑,再确认。解决方案就一个,就是重试一定次数,然后加入死信队列。还有就是消费重新放入队列,然后重新投递给其他消费者,是什么场景

在 RabbitMQ 中,关于消息消费异常的场景确实有多个细分,下面我们可以具体讨论一下你提到的 消费端消费异常、业务异常与未手动确认 以及它们对应的解决方案。

1. 消费端消费异常、业务异常与未手动确认的关系

未手动确认 是一个常见的消费场景,与 消费端消费异常业务异常 是相关但不同的概念。它们分别的定义和解决方案如下:

1.1 未手动确认(Acknowledge
  • 场景描述: 消费者在接收到消息后,没有及时确认消息(没有执行 ack()reject())。如果没有确认,RabbitMQ 会认为消息未被处理,默认情况下它会在消费者断开连接或超时后重新投递消息。

    关键点

    • 消息消费过程中,如果消费者处理完消息后不发送 ack 确认消息,RabbitMQ 不会删除队列中的消息,而是保留该消息并等待确认。
    • 如果消费者崩溃或未及时确认消息,RabbitMQ 会重新将该消息投递给其他消费者,或者重复投递给相同消费者。
  • 解决方案

    • 使用手动确认机制(manual ack),确保每条消息处理成功后都及时发送 ack。如果处理失败,可以选择发送 nack(negative acknowledgment)并将消息重新放回队列,或者将其放入死信队列。
    • 消费者必须确保在处理完消息后调用 ack,如果在某些情况下处理失败,可以实现一定的重试机制或者将失败的消息放入死信队列进行后续人工干预。
1.2 消费端消费异常
  • 场景描述: 消费者在处理消息时发生异常,例如业务逻辑抛出异常或无法访问外部系统(如数据库、API)等。这种情况下,消费者在处理消息时不能正常完成业务逻辑,可能会抛出异常或者无法成功完成操作。

    关键点

    • 这种异常通常发生在消费消息后,进行业务处理时。如果业务处理失败,消费者可能会想要重新处理消息,或者放弃该消息。
  • 解决方案

    • 重试机制:可以使用重试机制,重新消费该消息。常见的做法是使用指数退避策略(例如,逐渐增加重试间隔),避免过多的重试导致系统负载过高。
    • 死信队列:在多次重试失败后,可以将消息放入死信队列(Dead Letter Queue),等待后续处理或人工干预。
    • 幂等性设计:确保消费者在处理业务时,具备幂等性,即即使相同的消息被消费多次,系统的状态不会发生不一致。
1.3 业务异常
  • 场景描述: 业务逻辑的错误通常会导致处理失败,例如数据不一致、外部依赖故障等。这类异常与消费端是否手动确认无关,重点在于业务处理本身是否成功。

  • 解决方案

    • 重试机制:与消费端异常类似,业务异常通常也需要一个重试机制,特别是在外部服务不可用的情况下。
    • 死信队列:如果在多次重试后仍无法解决,消息可以被移至死信队列,等待人工干预。
    • 补偿机制:在某些业务场景中,可以采用补偿机制来恢复错误的操作。比如某个业务操作失败后,通过反向操作来抵消已经完成的部分。

2. 消息重新投递给其他消费者(与未手动确认)

这种场景通常发生在 未手动确认 或者 消费端崩溃 的情况下。

场景描述:

如果某个消费者无法确认消息(例如,未发送 ack 或者消费者崩溃),RabbitMQ 会尝试将该消息重新投递给其他消费者。RabbitMQ 会将消息返回到队列并将其重新投递给其他消费者进行处理。

  • 关键点

    • 这种行为发生在消费者处理消息时发生未确认的情况,而不是因为业务逻辑失败。
    • 其他消费者可以接收到重新投递的消息并重新进行消费。
  • 解决方案

    • 消息确认机制:确保消费者在每次成功处理后确认消息。如果未确认,RabbitMQ 会重新投递消息。
    • 消费者数量扩展:为了提高消费速度,可以增加消费者的数量来帮助分担消息的消费压力,减少消息堆积。

3. 消费异常的重试和死信队列

这是一个非常普遍的补偿机制,适用于大多数异常场景。

场景描述:

如果消息消费失败,重试一定次数后仍然无法成功处理,可以将消息投递到死信队列。

  • 关键点
    • 重试:对于可恢复的异常(例如外部系统暂时不可用),可以设定一个重试机制,尝试重新处理消息。重试次数可以限定。
    • 死信队列:对于不可恢复的异常,或者经过多次重试仍然失败的消息,将消息放入死信队列。死信队列可以由开发人员或运维人员查看,进行人工干预,或者进行后续处理(例如,通知系统管理员或通过补偿机制修正错误)。
解决方案:
  • 设置最大重试次数:为了避免死循环和队列无限增长,可以设置最大重试次数,超过次数后将消息转移到死信队列。
  • 死信队列配置:配置死信队列以便后续处理。例如,可以通过 DLX(死信交换机)配置将失败消息转移到指定的死信队列。
  • 重试延迟:在消息重试过程中使用延迟队列,避免系统立即重新处理失败的消息,允许外部系统或条件恢复后再进行处理。

总结

  • 未手动确认 是一个消费者未及时确认消息的场景,RabbitMQ 会重新投递消息。解决方案包括手动确认、重试机制和死信队列。
  • 消费端消费异常 指的是消费者在处理消息时发生异常,通常需要实现重试机制或将失败的消息放入死信队列。
  • 业务异常 通常与业务逻辑相关,需要针对具体的业务场景设计补偿机制(如重试、死信队列、补偿事务等)。
  • 消息重新投递给其他消费者 是未手动确认或消费者崩溃的结果,RabbitMQ 会将未确认的消息重新投递给其他消费者进行处理。

总的来说,处理消费端异常的核心思路是通过重试机制、幂等性设计和死信队列等技术手段,确保消息消费的可靠性和系统的健壮性。

http://www.yayakq.cn/news/639442/

相关文章:

  • 微网站免费建设平台静态html转化wordpress主题
  • 扬州网站建设哪家公司好网站图片地址怎么做
  • 做a暧小视频在线观看网站昆明seo怎么做
  • ppt模板网站源码施工企业
  • 网站不备案可以登录吗网站标签怎么做跳转页面
  • 兼职网站建设策划书大连模板网站制作服务
  • 怎样建立销售网站广西网站建设价格多少
  • 顺德o2o网站建设贵阳百度推广电话
  • 网站建设招标方案模板天津建设培训中心网站
  • 嘉定江桥网站建设网页的设计与制作
  • 广东网页空间网站平台邯郸做商城网站的公司
  • 怎么做qq刷会员的网站跨境电商erp软件前十名
  • iis 访问网站需要进行身份验证平台建设包括什么
  • 鹤壁做网站的公司洛阳做网站公司地址
  • 宠物网站策划书wordpress百万数据
  • 杭州外贸网站建设公司申跃如何做文化传播公司网站
  • 提交网站到谷歌石家庄住房和城乡建设厅网站
  • 网站建设流程步骤怎么样临沂住房和城乡建设局网站
  • 博客网站的建设流程做影视网站用主机还是用服务器
  • 上线了做网站怎么查看舆情报告分析10000字
  • 小灯具网站建设方案做汽车团购网站有哪些
  • 宁波易企网做的网站六安人论坛招聘求职
  • 珠宝购物网站的建设注册网站要求
  • 快速模仿一个网站口碑好的坪山网站建设
  • 网站开发设计书籍品牌网站建设代理
  • 中英文双语的网站怎么建设wordpress 除了
  • 云南网络公司网站注册公司代理有哪些
  • 途牛网站大数据建设大型网站建设济南兴田德润团队怎么样
  • wordpress站点标题字数百度账号注销
  • 深圳网站设计知名乐云seo网站建设流程中哪些部分比较重要