Artikel ini memperkenalkan metode penceritaan kembali musim semi untuk mendukung Retry Spring. Itu dibagikan dengan Anda. Dengan rincian sebagai berikut:
Langkah pertama adalah memperkenalkan dependensi Maven
<partent> <groupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-parent </t Artifactid> <version> 1.5.3.release </version> </dependency> <groupid> org.springframework.boot </groupid> <ArTifactId> Spring-Boot-starter-web </arttifactid> </gandendency> <!-https://mvnrepository.com/artifact/org.springframework.retry/spring-retry-> <groupid> <groupid> org.springframework.retry </groupy </groupiF> <groupid> <version> 1.1.2.release </version> </dependency> <dependency> <GroupId> org.aspectj </groupId> <ArTifactId> aspekJweaver </RaintifactId> <Version> 1.8.6 </version> </dependency>
Langkah 2: Tambahkan Anotasi @Retryable dan @Recover
Paket halo; impor org.springframework.remoting.remoteAccessException; impor org.springframework.retry.annotation.backoff; impor org.springframework.Retry.annotation.recover; impor org.springframework.retry.annotation.recover. org.springframework.stereotype.service; @servicePublic kelas RemoteService {@Retryable (value = {remoteAccessException.class}, maxattempts = 3, backoff = @backoff (tunda = 5000L, multiplier = 1)) void call () someting {"dext." Someting. Lempar RemoteAccessException baru ("Pengecualian panggilan RPC");}@RecoverPublic void Recover (RemoteAccessException e) {System.out.println (e.getMessage ());}} @Retryable Annotation <br /> Jika metode beranotasi memiliki pengecualian, itu akan dicoba lagi
Nilai: Tentukan bahwa pengecualian terjadi dan coba lagi
termasuk: seperti nilai, default kosong. Ketika dikecualikan juga kosong, semua pengecualian akan dicoba lagi
Kecualikan: Tentukan bahwa pengecualian tidak coba lagi, standarnya kosong. Ketika dimasukkan juga kosong, semua pengecualian akan dicoba lagi.
Maxattemps: Jumlah Retry Times, Default 3
Backoff: Coba lagi mekanisme kompensasi, tidak ada default
Anotasi @Backoff
Tunda: Tentukan penundaan dan coba lagi
Pengganda: Tentukan kelipatan penundaan, seperti penundaan = 5000L, pengali = 2, setelah coba lagi adalah 5 detik, kedua kalinya adalah 10 detik, dan ketiga kalinya adalah 20 detik.
@Pulih
Ketika coba lagi mencapai jumlah kali yang ditentukan, metode beranotasi akan dipanggil kembali, dan pemrosesan log dapat dilakukan dalam metode ini. Perlu dicatat bahwa panggilan balik hanya akan terjadi jika pengecualian terjadi dan jenis parameternya sama.
Langkah 3: Mulai wadah dan tes di Springboot
Tambahkan anotasi @enableretry untuk mengaktifkan fungsi coba lagi
Paket halo; impor org.springframework.boot.autoconfigure.springbootApplication; impor org.springframework.context.applicationContext; impor org.springframework.context.annotation.annotationConfigApplicationContext; impor; org.springframework.retry.annotation.enableretry;@springbootApplication@enableretrypublic class Application {public static void main (string [] args) melempar pengecualian {applicationContext annotationContext = new annotationConfigLicationContext ("hello"); RemoteService RemoteService = annotationContext.getBean ("RemoteService", RemoteService.class); remoteService.call (); }} Hasil Menjalankan:
16: 50: 51.012 [Utama] debug org.springframework.retry.support.retrytemplate - coba lagi: hitung = 0
Lakukan sesuatu ...
16: 50: 51.025 [Utama] debug org.springframework.retry.backoff.exponentialbackoffpolicy - tidur untuk 5000
16: 50: 56.026 [Utama] debug org.springframework.retry.support.RetryTemplate - Memeriksa Rethrow: Count = 1
16: 50: 56.026 [Utama] debug org.springframework.retry.support.RetryTemplate - Coba lagi: hitung = 1
Lakukan sesuatu ...
16: 50: 56.026 [Utama] debug org.springframework.retry.backoff.exponentialbackoffpolicy - tidur untuk 5000
16: 51: 01.026 [Utama] debug org.springframework.retry.support.RetryTemplate - Memeriksa Rethrow: Count = 2
16: 51: 01.027 [Utama] debug org.springframework.retry.support.RetryTemplate - Retry: count = 2
Lakukan sesuatu ...
16: 51: 01.027 [Utama] debug org.springframework.retry.support.RetryTemplate - Memeriksa Rethrow: Count = 3
16: 51: 01.027 [Utama] debug org.springframework.retry.support.RetryTemplate - Coba coba lagi Upaya Terakhir Gagal: Count = 3
Pengecualian panggilan RPC
Referensi: https://github.com/spring-projects/spring-retry
Mengisi kembali
Untuk permintaan yang tidak berpotongan (seperti operasi baru atau yang diperbarui), jangan gunakan coba lagi, karena akan memiliki dampak besar pada konsistensi data.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.