3536247259:ソースの電子商取引プラットフォームペンギンBEGを追加してください。あなたは春のクラウドHystrixはブレーカーを達成使用を開始する前に、私たちは前に実装するための基礎として取得何か、を含みます:
ユーレカ・サーバー・プロジェクト:サービスレジストリ、ポート:1001
ユーレカ・クライアントプロジェクト:サービスプロバイダは、開始ポート2001の2つの例です
ユーレカ・消費者リボン、ユーレカ・消費者・リボンhystrixの名前:今、私たちは前に消費者サービスの実装にそれをコピーすることができます。ここでは、でそれらを変更し始めます。
ステップ:スプリングクラウドスタータhystrix依存で導入依存ノードのpom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
ステップ2:使用@EnableCircuitBreaker @EnableHystrix注釈アプリケーションや使用されるオープンHystrixのメインクラス:
@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
注意:ここで我々はまた、@SpringCloudApplicationメインクラス春クラウドアプリケーションアノテーションを使用して変更することができ、示されたアノテーションを具体的に定義されました。私たちは、注釈が私たちの3引用上の注意事項が含まれていることを見ることができ、これは、標準のアプリケーションが春のクラウドサービスの発見と回路ブレーカを含むべきであることを意味します。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public @interface SpringCloudApplication {
}
第三段階:サービスの消費パターン、新しいConsumerServiceクラス、コントローラの過去に、論理移行の転換。最後に、サービスをダウングレードする方法を指定するには、論理的な増加@HystrixCommand注釈を実行するための具体的な機能に、例えば:
@RestController
public class DcController {
@Autowired
ConsumerService consumerService;
@GetMapping("/consumer")
public String dc() {
return consumerService.consumer();
}
class ConsumerService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "fallback")
public String consumer() {
return restTemplate.getForObject("http://eureka-client/dc", String.class);
}
public String fallback() {
return "fallback";
}
}
}
のは、上記のHystrixがもたらす確認するために、いくつかの基本的な機能を見てみましょう。サービス:[ユーレカ-消費者リボンhystrix、ユーレカ-クライアント] 2101 /消費者、そしてあなたのような通常のリターンを、得ることができます:我々は、最初に起動した後、ローカルホストを訪問サービスに関与しています。
サービス低下のロジックをトリガーするためには、我々のような、いくつかの遅延を追加する論理サービスプロバイダユーレカ・クライアントになることができます。
@GetMapping("/dc")
public String dc() throws InterruptedException {
Thread.sleep(5000L);
String services = "Services: " + discoveryClient.getServices();
System.out.println(services);
return services;
}
その後、再起動ユーレカ・クライアント、およびローカルホストにアクセスしようとした後:フォールバック:2101 /消費者が、今回は返します値を取得します。サービスコンシューマは、サービス要求のタイムアウト例外をトリガしながら、返す前にユーレカ・クライアントコンソールから、あなたはサービスプロバイダーの出力の結果が返されなければならなかった、見ることができるため、5秒の遅延に私たちは、サービスコンシューマHystrixCommandコメントを通じて指定されたロジックの実行が劣化し、その要求の結果は、フォールバックを返すように。セルフサービスのような機構は、基盤を保護するために役立った、だけでなく、サービスの劣化メカニズムの自動切り替えが異常で提供します。