当前位置: 首页 > 网络应用技术

消息队列RocketMQ简介消息审查策略(6)

时间:2023-03-07 16:36:54 网络应用技术

  在发送和消费的过程中,可能存在错误,例如异常网络,并且需要犯错误。这种消息需要两种类型分为两种类型,即产品和消费者侧。

  今天,让我们谈谈RocketMQ如何是一种消息重试策略。

  生产者方的消息失败了,也就是说,生产者向MQ发送了一条消息,该消息未成功发送。例如,网络抖动导致生产者向MQ失败发送消息。

  生产者的发送方法本身支持内部重试,重试的逻辑如下:

  因此,如果消息发送给经纪人本身,则不会检索。

  上述策略仍然不能保证消息必须成功。为了确保消息必须成功,建议申请该应用程序:如果发送同步方法失败,请尝试将消息存储到DB,并从背景线程中尝试一下接触经纪人

  上述数据库重试方法未集成到MQ客户端中。取而代之的是,需要应用自己来完成它。它基于以下几点:

  总而言之,建议由应用程序控制。

  消费者端的失败分为两种情况,一个是例外,另一个是超时。

  该新闻对消费者来说是正常的,但是消费者有异常和失败。) 等等。

  消息的状态:

  可以看出,消息的状态被分为成功或失败。如果返回状态失败了?

  可以在经纪人的日志中看到此信息:这表明如果新闻消费失败,将在1s,5s和10s之后重复新闻,并且直到2H才能尝试。

  实际上,无需重试很多次,可以对3到5次进行审查。这次,您可以通过msg.getReconsumetimes()()来控制重型测试的数量。

  代码如下(示例):

  例如,由于网络原因,该新闻根本没有从MQ到消费者,因此该新闻将在RocketMQ内部不断尝试,直到发送成功为止!

  换句话说,服务器不会从消息中收到反馈,既不成功也没有失败。目前,它被定义为超时。

  消息重复的根本原因是不允许网络。只要数据通过Internet交换,就无法避免此问题。因此,解决此问题的解决方案是绕过此问题。:如果消费者终端接收两条相同的消息,我该怎么办?

  正如“ RocketMQ原则简介”中提到的,RocketMQ无法避免新闻重复,因此,如果业务对消费非常敏感,则有必要在业务状况中重大。

  第1条该解决方案已被充分理解。只要维护它,无论出现多少重复消息,最终过程都是相同的。明显地,应在消费者方面实施。

  第2条的原则是使用日志表记录已成功处理的消息的ID。如果新到达的消息ID已经在日志表中,则不会处理此消息。该方案可以通过消息系统或业务方面实现。在正常情况下,重复消息的可能性实际上很小。如果实现了消息系统,它肯定会影响消息系统的吞吐量和高可用性,因此最好处理业务端重复消息的问题。RocketMQ不能解决重复问题的原因。

  感谢您的阅读,上述内容是所有内容。本文描述了审查和消费者试验的机制,以及重复消费的解决方案。不利条件,我希望对更多的批评。

  如果您认为本文对您有帮助,请帮助赞美评论,支持浪潮?

  原始:https://juejin.cn/post/70949162923790373

猜你喜欢