gpt4 book ai didi

java - 如果队列/数据库出现故障,何时关闭消息处理?

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:17 26 4
gpt4 key购买 nike

这更像是一个最佳实践问题,适用于应用程序接收消息、将消息保存到数据库并可能因此发送消息的常见情况。

  • 假设事务性整理出原子提交;关于何时完全关闭应用程序的好政策是什么?
  • 如果数据库出现故障,应用程序可能会被消息淹没,最终会拒绝这些消息。它应该立即放弃吗?
  • 如果出站消息服务失败,数据库将被回滚淹没。再说一次,最好立即放弃吗?

关于如何最好地强制 spring 应用程序在这种情况下关闭的任何提示的更多加分点,因为包含的默认监听器将捕获任何运行时异常并继续运行。

最佳答案

据我了解,您正在寻找以下内容:

  1. 不要仅仅因为应用程序无法处理它们而从入站队列中丢失消息。
  2. 如果在处理过程中出现错误,何时停止处理。

首先,重要的是要分析您正在处理的基础架构以及您必须处理的情况类型。典型的停机时间以及它们在系统的各个层级中发生的频率。网络有多可靠,你有没有 db rac 服务器等。

  1. JMS 已经提供了重试机制。如果消息处理失败,将其发送回队列,直到 retires 到期。这只有在加上延迟才有意义,这样就不会发生泛洪。如果一个小的延迟不会影响交易,我会推荐使用有延迟的消息。根据您的 JMS 提供者,这是支持容器自定义的。当无法处理来自入站队列的消息时使用死信或异常队列有助于减少消息丢失。

  2. 同样,您可以成为情况的最佳判断者。您可以将属性定义为有多少次连续发送到死信队列构成关闭条件。您可以在系统测试期间对其进行调整以避免误报。

关于java - 如果队列/数据库出现故障,何时关闭消息处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2237413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com