web-dev-qa-db-ja.com

Hystrix機能をオフにする

Hystrixをアプリケーションに統合しています。そのアプリケーションはすでに本番環境にあり、本番環境にプッシュする前に、サンドボックスでhystrix統合作業をテストします。私の質問は、いくつかの構成設定を使用してhystrix機能をオン/オフにする方法はありますか?

8
yousafsajjad

これには単一の設定はありません。 Hystrixを無効にするには、複数のパラメーターを設定する必要があります。

構成オプションについては、 https://github.com/Netflix/Hystrix/wiki/Configuration を参照してください。

hystrix.command.default.execution.isolation.strategy=SEMAPHORE
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests=100000 # basically 'unlimited'
hystrix.command.default.execution.timeout.enabled=false 
hystrix.command.default.circuitBreaker.enabled=false
hystrix.command.default.fallback.enabled=false

使用可能なパラメーターについては、Hystrixのバージョンを再確認してください。

8
ahus1

これがあなたが必要とするすべてです:

# Disable Circuit Breaker (Hystrix)

spring:
  cloud:
    circuit:
      breaker:
        enabled: false

hystrix:
  command:
    default:
      circuitBreaker:
        enabled: false
4
Alexis Gamarra

Ahus1が言ったように、Hystrixを完全に無効にする単一の方法はありません。アプリケーションで無効にするために、HystrixCommandをラッパークラスに配置するのが最もクリーンで安全であり、ラッパークラスは使用したHystrixCommandの部分(この場合はexecute()メソッド)のみを公開することを決定しました。ラッパークラスを構築するときに、実行するコードを含むCallableを渡します。Hystrixが無効になっている場合(独自の構成値に従って)、HystrixCommandを作成せずにそのCallableを呼び出すだけです。これにより、Hystrixコードの実行が一切回避され、Hystrixがアプリケーションに影響を与えていないことを簡単に言うことができますまったく無効になっている場合。

3
Nick Luchsinger

単一のプロパティを使用してHystrixを完全にオフにしたいというこの状況に遭遇しました(動的プロパティの管理にはIBM uDeployを使用しています)。 Hystrix上に構築されたjavanicaライブラリを使用しています

  1. HystrixCommandAspectを作成する構成クラスを作成します



@Configuration public class HystrixConfiguration{

@Bean(name = "hystrixCommandAspect")
@Conditional(HystrixEnableCondition.class)
public HystrixCommandAspect hystrixCommandAspect(){ 
      return new HystrixCommandAspect()}
}
</ code>



public class HystrixEnableCondition implements Condition{ @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata){ return "YES".equalsIgnoreCase( context.getEnvironment().getProperty("circuitBreaker.enabled")) || "YES".equalsIgnoreCase( System.getProperty("circuitBreaker.enabled")); } }
0
Sherin Syriac

これを達成する方法はいくつかあります-

  1. デフォルトを含むすべてのグループに対してこれを実行します。これはhystrixを無効にするわけではありませんが(回路を常に閉じたままにするだけです)、同じ結果が得られます-

    hystrix.command.{group-key}.circuitBreaker.forceClosed=false

  2. Javaを使用している場合は、@ HystrixCommandアノテーションに関するアドバイスを作成し、フラグに基づいてhystrixの実行をバイパスできます。

#2-のJavaコード

@Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand)")
public void hystrixCommandAnnotationPointcut() {
}

@Around("hystrixCommandAnnotationPointcut()")
public Object methodsAnnotatedWithHystrixCommand(final ProceedingJoinPoint joinPoint) throws Throwable {
Object result = null;
Method method = AopUtils.getMethodFromTarget(joinPoint);
if ((System.getProperty(enable.hystrix).equals("true")) {
    result = joinPoint.proceed();
} else {
    result = method.invoke(joinPoint.getTarget(), joinPoint.getArgs());
}
    return result;
}
0
Mukul Bansal

プロジェクトがSpringManagedの場合は、applicationContext.xmlでhystrixAspectのBean定義にコメントできます。次の行にコメントします。

bean id = "hystrixAspect" class = "com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect" />

これにより、プロジェクトからHystrixが削除されます。

0
user3629613