Post3

Incorporating Spring Retry in Projects

Posted by Imran

Spring Retry is used to automatically re-invoke a failed operation. It helps in making the overall process more robust and less prone to failure. Spring Retry is very helpful in situations where the errors are transient in nature. For instance, a database call to make the database connection with application or web service call that fails because of a network problem may resolve on its own after a certain number of retries. It provides abstract control of the process and policy-based behavior that is easy to customize.

In this blog post, we are going to learn the implementation of Spring Retry in applications.

Maven Dependency

Enabling Spring Retry in the Project

To enable Spring Retry in an application add the @EnableRetry annotation to the @Configuration class.

Approaches to Enable Spring Retry

Adopt any of the following approaches to enable Spring Retry in an application.

Custom Aspect to Incorporate Spring Retry

This approach should be spontaneous because the retry logic is considered a cross-cutting concern. An ideal way to implement a cross-cutting concern is using Aspects.

Spring Retry Provided Advice

Unorthodox Spring Retry projects provide advice to ensure that targeted services are re-tried. Unlike the ‘Custom Aspect to Incorporate Spring Retry’ approach where the Aspect was woven using Spring Java configuration, in ‘Spring Retry Provided Advice’ the AOP configuration to create the advice around the service requires dealing with the raw XML file. The XML configuration file looks something like this:

Declarative Retry Logic

The code in ‘Declarative Retry Logic’ approach is more concise than the previous two approaches, making it the recommended approach to enable Spring Retry. The approach requires you to declaratively indicate the methods needed to be retried.

In case of a RuntimeException, the getEmployeeDetails method will be automatically re-invoked 10 times. If the last execution also fails, the method annotated with @Recover will be launched. The absence of a recover method will throw up an exception.

Final Words

Spring Retry goes a long way in ensuring the robustness of the project by automatically retrying failed operations. Its rich library enables us to make common retryable tasks more predictable, testable and easier to implement.

Now that you have a slightly better idea of how to incorporate Spring Retry in your project, we would want you to implement it and let us know your experience in the comments below.

Until next time!

 

Related Posts

  • Introduction to Messaging

    Messaging is one of the most important aspects of modern programming techniques. Majority of today's systems consist of several modules and external dependencies. If they weren't able to communicate with…

  • Restful API Documentation using SWAGGER with Spring MVCRestful API Documentation using SWAGGER with Spring MVC

    What is Swagger? It is a specification for documenting REST API. It specifies the format (URL, method, and representation) to describe REST web services. Swagger is meant to enable the…

  • Flyway Integration with Spring MVCFlyway Integration with Spring MVC

    Flyway is an open-source database migration tool that supports simplicity and convention over configuration. It makes setting up and maintaining database schemas a breeze. Flyway is used across all environments…

  • Teradata Intelligent Memory (TIM)

    Overview of Teradata Teradata is a RDBMS (Relational Database Management System). This system is solely based on off-the-shelf (readymade) symmetric multiprocessing (SMP) technology combined with communication networking, connecting SMP systems…

  • Understanding Memory Tuning in JVM- A Case Study and Analysis

    JVM Heap Model The JVM heap model consists of the Young generation and the Old generation memory. The newly created objects are allocated to the young generation memory, as they…

  • SQL Server – Reporting Services MigrationSQL Server – Reporting Services Migration

    A while back, I got a task in my project, which was to migrate SQL Server Reporting Services from SQL 2008 to SQL 2012. Now, I had two ways of…

Leave a Reply

Your email address will not be published. Required fields are marked *