首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理Microservice体系结构和异步消息队列中的错误

处理Microservice体系结构和异步消息队列中的错误
EN

Software Engineering用户
提问于 2021-11-23 23:11:58
回答 1查看 795关注 0票数 1

当通过http请求在Microservices之间进行相互通信时,很容易将错误消息回复给用户,您只需捕捉到不同服务的错误并将其转发给用户即可。

但是,在通过消息队列进行通信时,错误处理是如何工作的呢?

例如,用户向Auth Service发出请求,Auth Service发布一条消息,指示需要创建一个新用户。用户服务将使用此消息并尝试创建新用户。但是,如果用户服务抛出错误,可能已经收到了电子邮件。我们如何通知用户他的请求失败?

我的猜测是,不可能用此错误响应用户,因为对Auth Server的初始请求在将消息发布到队列后已经关闭。这是否是同步通信的一个更好的例子?

示例流:

代码语言:javascript
运行
复制
client -> Auth Service                              User Service
                   |                                       ↑  |
                   | create User               create User |  | Fails to create User
                   |                                       |  |
                   ↓                                       |  ↓
           ----------------------Async Queue----------------------
EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-11-24 00:06:12

一般来说,您有两种选择:

第一种是传回信息。用户服务知道auth服务发送了请求,因此将通过报告错误(或成功)来完成循环。

第二个选项是在消息队列旁边有一个公共DB。该通用DB存储有关作业的信息,包括时间、状态和错误信息。

第一个选项具有更好的扩展性和更强的容错能力,但更难调试、可视化和协调。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/433760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档