Heim > Java > javaLernprogramm > Wie SpringBoot Retry integriert, um Fehlerwiederholungen zu implementieren

Wie SpringBoot Retry integriert, um Fehlerwiederholungen zu implementieren

PHPz
Freigeben: 2023-05-19 22:11:32
nach vorne
995 Leute haben es durchsucht

    Einführung von Abhängigkeiten

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.retry</groupId>
        <artifactId>spring-retry</artifactId>
    </dependency>
    Nach dem Login kopieren

    Vollständige Abhängigkeit von pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.7.7</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>demo</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- spring-retry -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.retry</groupId>
                <artifactId>spring-retry</artifactId>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    Nach dem Login kopieren

    Spring-Retry öffnen # 🎜🎜#

    Annotation zur Startup-Klasse hinzufügen

    @EnableRetry

    package com.example.demo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.retry.annotation.EnableRetry;
    @EnableRetry
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    Nach dem Login kopieren

    Retry-Annotation verwenden

    @Retryable-Annotation

    # 🎜 🎜#
      Wert, wiederholbarer Ausnahmetyp. Die Bedeutung ist dieselbe wie „include“. Der Standardwert ist leer (wenn „excludes“ ebenfalls leer ist, werden alle Ausnahmen erneut versucht)
    • include: Wiederholbare Ausnahmetypen. Der Standardwert ist leer (wenn „excludes“ ebenfalls leer ist, werden alle Ausnahmen erneut versucht)
    • exclude: Ausnahmetypen, die nicht erneut versucht werden müssen. Der Standardwert ist leer (wenn Includes ebenfalls leer sind, werden alle Ausnahmen erneut versucht)
    • maxAttempts: Die maximale Anzahl von Wiederholungsversuchen (einschließlich des ersten Fehlers), der Standardwert ist 3 Mal
    • backoff: Wartestrategie wiederholen, die unten in @Backoff vorgestellt wird
    • recover: bedeutet Wiederholung, Rückrufmethode, nachdem die Anzahl der Versuche die maximale Anzahl von Wiederholungen erreicht hat Verzögerung, Wiederholung Die maximale Wartezeit zwischen Wiederholungsversuchen (in Millisekunden) #
    • Multiplikator, geben Sie das Vielfache der Verzögerung an.

    VerzögerungAusdruck, die Wartezeit Ausdruck zwischen Wiederholungsversuchen

    • maxDelayAusdruck, der maximale Wartezeitausdruck zwischen Wiederholungsversuchen

    • multiplierAusdruck, der Multiplikatorausdruck, der Gibt die Verzögerung an

      #🎜 🎜#
    • zufällig, zufällige Angabe der Verzögerungszeit

    • Anwendungsbeispiel

      package com.example.demo.component;
      import org.springframework.retry.annotation.Recover;
      import org.springframework.retry.annotation.Retryable;
      import org.springframework.stereotype.Component;
      @Component
      public class HttpRequest {
          private int count = 0;
          /**
           * 模拟网络请求异常
           * @return
           */
          @Retryable(recover = "errorHandler")
          public String getResponse() {
              count++;
              System.out.println("time: " + count);
              if (count < 4) {
                  throw new RuntimeException("count: " + count);
              }
              return "success";
          }
          /**
           * 错误处理函数
           * 注意:需要返回 String,否则会抛出方法找不到异常
           * org.springframework.retry.ExhaustedRetryException: Cannot locate recovery method
           *
           * @param e
           * @return
           */
          @Recover
          public String errorHandler(RuntimeException e) {
              System.out.println("errorHandler");
              return "ok";
          }
      }
      Nach dem Login kopieren
      # 🎜🎜#Test

      package com.example.demo.component;
      import org.junit.jupiter.api.Test;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      @SpringBootTest
      public class HttpRequestTest {
          @Autowired
          private HttpRequest httpRequest;
          @Test
          public void getResponse(){
              httpRequest.getResponse();
          }
      }
      Nach dem Login kopieren
      # 🎜🎜#Ausgabeergebnis
    • Zeit: 1

      Zeit: 2
    • Zeit: 3
    • errorHandler# 🎜🎜#

    • Das obige ist der detaillierte Inhalt vonWie SpringBoot Retry integriert, um Fehlerwiederholungen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage