ตัวอย่างการใช้ RetryTemplate ในการ retry ใหม่เวลายิง api แล้วเกิด Error

| Java Spring | 55 | 53 วันที่แล้ว
สวัสดีคับ บทความนี้ผมมาแนะนำการใช้ RetryTemplate เพื่อทำการ retry ใหม่ เวลาเราเรียก api แล้วเกิด Error

ก่อนอื่นเราก็ไป add lib ก่อนคับ ซึ่งผม add ใน pom.xml

<dependency>
  <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
  <version>1.3.0</version>
</dependency>
จากนั้นผมก็ทำการสร้าง bean ขึ้นมาชื่อว่า retryTemplate เพื่อที่จะไม่ต้องไปตั้งค่าทุกครั้งตามตัวอย่างโค้ดด้านล่าง
@Bean(name="retryTemplate")
	public RetryTemplate getRetryTemplate() {

		int maxAttempt = 2;
		int retryTimeInterval = 5000;

		SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
		retryPolicy.setMaxAttempts(maxAttempt);

		FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
		backOffPolicy.setBackOffPeriod(retryTimeInterval);

		RetryTemplate template = new RetryTemplate();
		template.setRetryPolicy(retryPolicy);
		template.setBackOffPolicy(backOffPolicy);

		return template;
	}
จากโค้ด จะมี int maxAttempt = 2; int retryTimeInterval = 5000; สองค่านี้เป็นจำนวนที่ retry กับระยะเวลาก่อนที่จะ retry ใหม่ พอได้ bean แล้วเราก็นำไปใช้ ดังตัวอย่างโค้ดด้านล่าง
jsonCusNameRes = retryTemplate.execute(context -> {
	return getNameData(query);
});
จากตัวอย่างเวลามี Exception ที่เกิดจากใน block ของ retry มันก็จะ retry ใหม่ ตามจำนวนรอบ และระยะเวลาที่ config ไว้ ลองนำไปใช้กันดูคับ
comments

[1]
AGI
58 D
[1]
Adobe-PDF
1162 D
[1]
Android
1053 D
[2]
Angular
36 D
[40]
Animal
1146 D
[1]
Apache
1162 D
[1]
[4]
[2]
[1]
[10]
CMS-Joomla
1163 D
[2]
CMS-SMF
1163 D
[1]
[4]
[1]
[3]
[1]
Database
1162 D
[4]
[1]
DeAI
23 D
[1]
DeData
23 D
[1]
DeFi
23 D
[2]
Docker
53 D
[2]
[1]
Forex
20 D
[1]
Fruit
1147 D
[1]
General
44 D
[2]
Git
949 D
[6]
HTML
53 D
[1]
Health
48 D
[1]
Housework
1151 D
[2]
IT
1143 D
[2]
Imacro
1163 D
[20]
Java
25 D
[1]
Java-Web
1053 D
[2]
[2]
MQL5
975 D
[3]
MakeMoney
948 D
[18]
[1]
[1]
Maven
947 D
[5]
[1]
Mobile
1160 D
[2]
NGINX
36 D
[2]
NodeJs
53 D
[1]
Oracle
53 D
[3]
Physics
944 D
[4]
PugJS
949 D
[2]
React
958 D
[132]
Science
1145 D
[2]
[5]
Spring
36 D
[12]
[7]
[2]
[1]
[4]
Ubuntu
1113 D
[1]
WebLogic
1144 D
[4]