【发布时间】:2020-08-28 01:57:35
【问题描述】:
我已经实现了一个 RESTful API,并且在某些端点上的一些更新中,我需要连接到某个 RabbitMQ 服务器或 Redis 服务器。这些信息将有助于事件进一步展开。我的问题是,在这种情况下如何处理网络异常?
例如,如果 Task A 更新了,我首先更新 DB(例如 mongodb)中 Task 的状态,然后在某个 RabbitMQ 服务器上提交消息,以通知另一个微服务上的另一个消费者。或者我可能需要更新 Redis 服务器上的一些计数器。
* API REQUEST - update Task A
*serving request:
* update Task A on DB
* send message to RabbitMQ about the change (ERROR ? socket timeout. do I retry indef ?)
* update a counter on Redis (ERROR ? socket timeout - do I retry indef?)
如果我在尝试连接 RabbitMQ 或 Redis 时遇到“套接字超时异常”,我该如何处理?我应该尝试还原数据库上的更改并简单地返回 HTTP 500 吗? 或者我应该尝试写下一些文件或数据库,关于这个失败,以便以后可以再次尝试?
系统是事件驱动的。没有守护进程不断检查来自 DB 的任务,因此必须在收到 API 请求的那一刻将这条消息发送到 RabbitMQ。或者 Redis 服务器上的更新应该是在收到 API 请求的那一刻进行的
【问题讨论】:
标签: exception redis rabbitmq distributed-computing