An open API service indexing awesome lists of open source software.

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

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.