Perkenalan
Terkadang klien perlu mencoba lagi ketika server konfigurasi tidak responsif untuk memberikan waktu server konfigurasi untuk pulih. Dengan menggunakan komponen coba lagi yang disediakan oleh Spring, kami dapat dengan mudah mengkonfigurasi mekanisme coba lagi, termasuk interval coba lagi, jumlah kali coba lagi, dll. Saya tidak akan mengatakan banyak hal di bawah ini, mari kita lihat perkenalan terperinci bersama -sama.
Kode Sumber Proyek
Klik untuk mengunduh
Tambahkan dependensi untuk proyek web
Untuk mengaktifkan fungsi Ceritry Ceritry, dua dependensi baru, pegas-retri, dan pegas-boot-starter-aop, tambahkan kode berikut ke file pom.xml proyek web:
<dependency> <GroupId> org.springframework.retry </groupId> <ArTifactId> Spring-retry </artifactid> <version> 1.2.2.release </version> </dependency> <Art Artifact> org.springframework.boot </groupid> <ArtiFacTID> Spring-st-starter-st-starter.coots.
Kemudian tambahkan konfigurasi berikut dalam file bootstrap.yml:
Spring: Aplikasi: Nama: Cloud Klien Web: Config: URI: http: // localhost: 8888 GAGAL-FAST: Benar Retry: Interval Awal: 1000 Max-Latihan: 6 Max-Interval: 2000 Multipleer: 1.1
Pertama, biarkan spring.cloud.config.fail-fast menjadi benar, yaitu, jika konfigurasi jarak jauh tidak dapat diperoleh, itu akan segera gagal, tetapi coba lagi dengan konfigurasi berikut.
spring.cloud.config.retry semua anak adalah nilai default:
tes
Jika kami menggunakan proyek dalam tutorial ini, kami perlu memulai proyek ConfigServer terlebih dahulu, kemudian memulai proyek registri dan mulai Eureka, karena klien web menggunakan layanan Eureka, kemudian tutup ConfigServer, dan kemudian mulai proyek web. Kami akan melihat log berikut:
2018-05-15 16: 04: 58.421 Info 2663 --- [Main] CCCCONFIGSERVICEPROPERTYSOURCELOCATOR: Mengambil konfigurasi dari server di: http: // localhost: 8888
Setelah 6 coba lagi kegagalan, klien gagal memulai. Jika ConfigServer diaktifkan di tengah jalan, klien web mulai berhasil.
Kembalikan kontrol berbutir halus
Kami dapat mengimplementasikan mekanisme coba lagi kontrol yang lebih granular dalam kode, membuat kelas Java baru cn.zxuqian.configurations.RetryConfiguration dalam proyek web, dan menambahkan kode berikut:
Paket cn.zxuqian.configurations; impor org.slf4j.logger; impor org.slf4j.loggerfactory; impor org.springframework.boot.autoconfigure.condition.conditionalonmissingbean; impor orgringfrigure.condition.conditionalonmissingbean; impor org.springframework.cpringfrework.conditionnoxymissingbean; impor org.spramework.cramework.cramork. org.springframework.retry.interceptor.RetryInterceptorBuilder; impor org.springframework.retry.interceptor.RetryOperationsInterceptor; kelas publik RetryConfiguration {private static logger = loggerFactory.getLogger (retryonfiguration.class); @Bean @ConditionalOnMissingBean(name = "configServerRetryInterceptor") public RetryOperationsInterceptor configServerRetryInterceptor() { log.info(String.format( "configServerRetryInterceptor: Changing backOffOptions " + "to initial: %s, multipleer: %s, maxInterval: %s", 1000, 1.2, 5000)); return retryinterceptorbuilder .stateless () .backoffoptions (1000, 1.2, 5000) .MaxAttempts (10) .build (); }} Di sini kami mendefinisikan metode ConfigServerRetryInterceptor untuk Spring Retry menggunakan Interceptor Retry Kustom kami. Metode Gunakan RetryInterceptorBuilder untuk membuat retryoperations interceptor yang tidak stateless sesuai kebutuhan, dan mengatur interval coba lagi menjadi 1000 milidetik, peningkatan multipel adalah 1,2 kali, interval coba lagi maksimum adalah 5000 milidetik, dan waktu pemulihan maksimum adalah 10 kali. Pembangun juga menyediakan antarmuka seperti mengonfigurasi mekanisme coba lagi, yang dapat dipelajari oleh pembaca yang tertarik.
@ConditionAnonMissingBean menunjukkan bahwa kacang ini cocok ketika tidak ada kacang bernama configServererretryinterceptor di beanfactory.
Akhirnya, di SRC/Main/Resources/Meta-InF/(tidak ada folder yang dapat dibuat) Buat file spring.factories baru, menentukan bahwa kami hanya membuat kelas sebagai konfigurasi saat startup, sehingga mulai berlaku sebelum mendapatkan konfigurasi jarak jauh:
org.springframework.cloud.bootstrap.bootstrapconfiguration = cn.zxuqian.configurations.RetryConfiguration
tes
Akhirnya, mulailah proyek web dengan syarat penutupan configserver, dan kemudian Anda akan melihat bahwa proyek dimulai gagal setelah sepuluh kali lagi.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.