https://github.com/cmccarthyirl/retryaspect
RetryAspect is a lightweight Java library for adding automatic retry functionality to methods without using Spring. Ideal for enhancing resilience in critical operations, it supports configurable retry attempts and delay intervals based on annotated method parameters. Easily integrate retry logic into your applications for handling transient errors
https://github.com/cmccarthyirl/retryaspect
Last synced: 4 months ago
JSON representation
RetryAspect is a lightweight Java library for adding automatic retry functionality to methods without using Spring. Ideal for enhancing resilience in critical operations, it supports configurable retry attempts and delay intervals based on annotated method parameters. Easily integrate retry logic into your applications for handling transient errors
- Host: GitHub
- URL: https://github.com/cmccarthyirl/retryaspect
- Owner: cmccarthyIrl
- License: mit
- Created: 2024-06-15T16:21:15.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-06-21T10:31:08.000Z (over 1 year ago)
- Last Synced: 2024-06-22T03:15:02.054Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 16.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# RetryAspect
This `RetryAspect` class is an implementation of the retry mechanism in Java using Aspect-Oriented Programming (AOP). It
allows methods annotated with `@Retryable` to be executed multiple times in case of failure, with configurable retry
attempts and backoff delay.
## Features
- **Retry Mechanism**: Automatically retries a method execution if it fails, based on the configuration provided by
the `@Retryable` annotation.
- **Configurable Attempts and Delay**: Allows configuration of the maximum number of retry attempts and the delay
between retries.
- **Exception Handling**: Only retries for specified exceptions, providing fine-grained control over which failures
should trigger a retry.
## Usage
To use the `RetryAspect` class, follow these steps:
### 1. Annotate Methods with `@Retryable`
Annotate the methods you want to be retryable with the `@Retryable` annotation.
```java
public class MyService {
@Retryable(maxAttempts = 3, backoff = @Backoff(delay = 1000), include = {RuntimeException.class})
public void performTask() {
// Method implementation
}
}
```
In this example, the `unreliableMethod` will be retried up to `3` times with a delay of `1000` milliseconds between retries,
but only if an `RuntimeException` is thrown.
### 2. Configure the `@Retryable` Annotation
The `@Retryable` annotation allows you to configure the retry behavior for a method. It has the following attributes:
- **maxAttempts**: The maximum number of retry attempts (default is 3).
- **backoff**: Specifies the backoff policy, including the delay between retries.
- **include**: The exceptions that should trigger a retry.
```java
@Retryable(maxAttempts = 5, backoff = @Backoff(delay = 2000), include = {IOException.class})
public void unreliableMethod() {
// Method implementation
}
```
In this example, the `unreliableMethod` will be retried up to `5` times with a delay of `2000` milliseconds between retries,
but only if an `IOException` is thrown.
## Usage
To use the RetryAspect library in your project, include the following dependencies and plugins in your `pom.xml` file:
1. Add `retryaspect` as a dependency
```xml
...
io.github.cmccarthyirl
retryaspect
1.0.1
...
```
2. Configure the AspectJ Maven Plugin
```xml
org.codehaus.mojo
aspectj-maven-plugin
1.15.0
16.0
16.0
16.0
true
true
ignore
UTF-8
io.github.cmccarthyirl
retryaspect
compile
test-compile
```
## Contribute
Contributions are welcome! [Here's](https://github.com/cmccarthyIrl/RetryAnalyzer/blob/master/CONTRIBUTING.md) how you can get started!!
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/cmccarthyIrl/RetryAnalyzer/blob/master/LICENSE) file for details.