我在服务A中启用了Hystrix fallback()方法,因此每当依赖服务B关闭时,它会转到后退方法并显示我提供的静态消息。
在执行此操作时,我也将失败的请求发送到mq(rabbit mq)
现在,我如何检索队列中的待处理或等待请求,并在依赖服务B启动时重新处理它?</ p>
答案 0 :(得分:0)
如果没有完整的架构概述(这将超出范围),很难确切地知道您要实现的目标。但乍一看,听起来你对Hystrix的期望太高了。一旦回退完成,它就完成了。
如果您已向队列发送消息,则需要从某个地方使用该消息。您希望仅在服务B运行时使用该消息 - 因此逻辑上唯一的选择是服务B从此失败的请求队列中消耗。因此,假设消费该消息,服务B将需要在服务A上重复该请求。
我想你可以有一个看门狗服务,一旦收到来自失败的请求队列的消息,它就会开始检查服务B的健康状况,一旦它“绿色”,就会重新尝试服务A上的请求。
这听起来很纠结于我,我建议重新考虑一下。
我猜这个静态信息就像是“抱歉,我们现在无法完成您的请求,但我们会在后台为您尝试”。
从中我意识到,如果你首先将服务B纯粹是消息驱动的话会更好。获取服务A直接向服务B发送消息。然后,无需担心服务中断或过载等等。