2 回答
TA贡献2016条经验 获得超9个赞
我不认为与您展示的方法类似的方法是 Hystrix 原生的,尽管可以通过理解Hystrix确定断路器是打开还是关闭的方式来创建一个方法。
此处的流程图提供了其工作原理的详细说明。(这些页面详细介绍了流程图)其中一个详细信息专门针对电路是否开放?.
摘自电路是否开放?
当您执行命令时,Hystrix 会检查断路器以查看电路是否开路。
如果电路打开(或“跳闸”),那么 Hystrix 将不会执行命令,但会将流路由到 (8) Get the Fallback。
如果电路闭合,则流程继续到 (5) 以检查是否有可用的容量来运行命令。
通过识别这种行为,检测状态何时从 Closed 变为 Open 是可能的。
从这个页面是豪猪事件类型的简明列表。标记的将在上面引用的步骤中有用:
TA贡献1784条经验 获得超7个赞
断路器本身不提供指标,它仅使用指标来通知其在 CLOSED、HALF_OPEN 和 OPEN 之间的转换。
您可以通过为指标流创建自己的订阅者来保持自己的开放和关闭转换计数。您只需要跟踪电路的最后一个已知状态,当您从流中获得更新时,将最后一个已知状态与更新中的状态进行比较。如果它们不同,则发生了转换,您将更新自己的计数器。
在 1.4 中,您必须使用new HystrixMetricsPoller()
,并将您自己的实现传递给它,MetricsAsJsonPollerListener
该实现会isCircuitOpen
为每个命令解析提供的 JSON 。
在 1.5 中,您将使用HystrixDashboardStream.getInstance().observe()
并注册您自己的消费者来获取更新。我认为这种方法需要更多的努力来获取HystrixCircuitBreaker
每个命令的底层对象,这可以让您检查isOpen()
以获取每个断路器的当前状态。
添加回答
举报