电路保护器是专为大型 Ruby 应用程序而构建的。
Circuitbox 是一个 Ruby 电路保护插件。 它保护您的应用程序免受其服务依赖项的故障影响。 它封装对外部服务的调用,并以一分钟的间隔监控故障。 如果使用某个电路的默认值时,已发出超过 5 个请求,且失败率为 50%,则 Circuitbox 会在 90 秒内停止向该失败服务发送请求。 这有助于您的应用程序平稳降级。 有关电路保护器模式的资源:
Circuitbox.circuit(:your_service, exceptions: [Net::ReadTimeout]) do
Net::HTTP.get URI('http://example.com/api/messages')
endCircuitbox 会为失败的请求和打开的电路返回 nil。如果您的 HTTP 客户端有自己的失败条件,则可以传递 exceptions 选项。
通过
Circuitbox.configure
可以配置 Circuitbox 的默认值。有两个可以配置的默认值: * default_circuit_store - 默认为 Circuitbox::MemoryStore。可以更改为兼容的 Moneta 存储。 * default_notifier - 如果定义了 ActiveSupport::Notifications,则默认为 Circuitbox::Notifier::ActiveSupport,否则默认为 Circuitbox::Notifier::Null。
暂无开放 Issues,或尚未同步最近议题。