gpt4 book ai didi

java - MQ 队列与批处理 : how to replay asynchronous process when it fails

转载 作者:行者123 更新时间:2023-11-30 06:19:13 26 4
gpt4 key购买 nike

作为中间件开发的一部分,我需要在两种机制之间进行选择来进行异步处理(有可能重放失败案例)我有以下两种技术的想法:

  • 使用 MQ 队列(发生错误时,在拒绝队列中插入消息并稍后重放)

  • 使用数据库来存储失败的案例,然后批量重放它们。

技术环境为Java(jdlk 8 + wildfly + REST Web服务作为中间件入口)

您能否通过比较这两种技术的优缺点来指导我,如果有更好的解决方案,我们将非常欢迎。

预先感谢您的帮助。

最佳答案

在这种情况下,我的偏好是选项 1。我的原因是:

  1. 无需额外的数据库及其所需的维护(更新架构、编写代码来写入和读取消息)。
  2. 您提到使用 MQ 文件,因此我假设您已经在使用消息队列,如果您使用 RabbitMQ 等服务总线,它可以自动将故障路由到故障队列。
  3. 您可以稍后为队列启动多个竞争消费者,这在清理大型队列时会更快(即更好的可扩展性)。批处理很可能是一个单独的顺序过程,一个接一个地搅动消息(当然这取决于您的实现,但很典型)。

此外,如果 REST 服务暂时繁忙,您始终可以对初始请求实现重试机制,以使其获得更好的成功机会,然后在重试尝试失败时将其放入队列中以便稍后处理。尝试查看类似 Spring retry 的内容

关于java - MQ 队列与批处理 : how to replay asynchronous process when it fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48541627/

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