java - Poller 在从 SQS 读取时是否应该抛出或处理异常?
问题描述
我正在编写一个自定义 java SQS Poller 以从 Amazon SQS 中读取并对消息进行一些操作。它是一个多线程应用程序,它将产生一个固定的线程池,每个线程都将监听 SQS。
现在,我对实现的一个方面有疑问,比如在从 SQS 接收或删除消息时,我遇到了一些异常,我应该抛出异常并从那里退出该线程吗?或者我应该只捕获异常而不抛出它并重试再次接收消息?在第二种情况下,要知道它无法正常工作,我可能会发布一些可以创建警报的指标,以便我知道这种情况是否经常发生。
建议的一种或更好的做法是哪种方式?
解决方案
如果您在与 SQS 的通信方面遇到问题,您应该在异常发生的地方捕获并记录它。你可以有一些重试策略,这取决于你。记录这些问题,然后您可以更准确地解决问题。
我不会从创建异常的线程中出去以在其他地方捕获它。在我看来,它应该在它发生的地方送达。如果重试过程失败,我会记录每一次重试和最终消息。
推荐阅读
- ios - 从 USDZ 文件转换为 SceneKit(SCN) 文件格式后,对象显示为黑色
- java - 如何修复 Android 中的 For 循环和随机问题?
- typeorm - 错误:添加多对多关系后未找到对象元数据
- hyperledger-fabric - Hyperledger Fabric 1.4 私有数据收集
- javascript - 如何计算动态创建的输入值的总和?
- reactjs - 向 ReactJS Webapp 添加唯一标识符
- python - 不同大小的工艺线到csv
- c# - 谁字段未更新 c# 多米诺日历创建
- python-3.x - 清除 tkinter 画布的问题
- qemu - 如何检测 AVX512 指令在 Qemu 上执行?