hystrix是否有能力恢复队列中的待处理请求?

时间:2017-11-29 19:38:29

标签: recovery hystrix

我在服务A中启用了Hystrix fallback()方法,因此每当依赖服务B关闭时,它会转到后退方法并显示我提供的静态消息。

在执行此操作时,我也将失败的请求发送到mq(rabbit mq)

现在,我如何检索队列中的待处理或等待请求,并在依赖服务B启动时重新处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

如果没有完整的架构概述(这将超出范围),很难确切地知道您要实现的目标。但乍一看,听起来你对Hystrix的期望太高了。一旦回退完成,它就完成了。

如果您已向队列发送消息,则需要从某个地方使用该消息。您希望仅在服务B运行时使用该消息 - 因此逻辑上唯一的选择是服务B从此失败的请求队列中消耗。因此,假设消费该消息,服务B将需要在服务A上重复该请求。

我想你可以有一个看门狗服务,一旦收到来自失败的请求队列的消息,它就会开始检查服务B的健康状况,一旦它“绿色”,就会重新尝试服务A上的请求。

这听起来很纠结于我,我建议重新考虑一下。

我猜这个静态信息就像是“抱歉,我们现在无法完成您的请求,但我们会在后台为您尝试”。

从中我意识到,如果你首先将服务B纯粹是消息驱动的话会更好。获取服务A直接向服务B发送消息。然后,无需担心服务中断或过载等等。