https://github.com/apache/geronimo-safeguard
Mirror of Apache Safeguard (Geronimo project around Fault Tolerance)
https://github.com/apache/geronimo-safeguard
geronimo http java javaee network-server web-framework
Last synced: about 1 month ago
JSON representation
Mirror of Apache Safeguard (Geronimo project around Fault Tolerance)
- Host: GitHub
- URL: https://github.com/apache/geronimo-safeguard
- Owner: apache
- License: apache-2.0
- Created: 2017-09-06T07:00:08.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-01T16:39:56.000Z (almost 6 years ago)
- Last Synced: 2025-04-03T04:16:55.918Z (12 months ago)
- Topics: geronimo, http, java, javaee, network-server, web-framework
- Language: Java
- Size: 198 KB
- Stars: 4
- Watchers: 15
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Apache Safeguard
Apache Safeguard is a library around Fault Tolerance, giving your application resilience in a highly distributed microservices framework. It is designed for use with CDI applications.
## What is Fault Tolerance?
In today's microservices runtimes, Fault Tolerance allows an application to handle the situations where another service it is consuming is unavialable.
## Types of Fault Tolerance
Fault Tolerance is a broad subject, has multiple areas of support typically found in a framework.
### Fallback
When a given invocation fails, you can declare a Fallback for that method.
### Timeout
Allows method invocations to be bounded to a specific duration. Once that boundary hits, an exception is thrown or a fallback is invoked.
### Retry
Allows a method to be invoked a number of times, as well as for a given duration.
### Circuit Breaker
Allows invocations to a given method as long as it is returning successfully. Based on thresholds defined, when a method begins failing invocations will be blocked. After a duration has passed invocations will begin to attempt again.
### Bulkhead
A bulkhead throttles concurrent access to a method. The throttling can either by based on a semaphore or a thread pool. Semaphores are invoked on the caller's thread and are not bound by any limit to pending requests. Thread pools are used to invoke the component asynchronously and have a finite amount of waiting invocations.
## Getting Started
Apache Safeguard is currently in development; however a 1.0 release was created that passes the MicroProfile Fault Tolerance TCK. You can add the following dependencies to your project:
```xml
org.apache.geronimo.safeguard
**safeguard-impl**
1.0
```
Apache Safeguard implements the [MicroProfile Fault Tolerance v1.0 specification](https://github.com/eclipse/microprofile-fault-tolerance/releases/tag/1.0)
### Integration
For `@Asynchronous` executor customization you can use:
```java
@ApplicationScoped
public class MyExecutionManagerProvider {
@Resource
@Produces
@Safeguard
private ManagedScheduledExecutorService executor;
}
```
## Dev tip
To find the interceptor priority you can use this shell command:
`find . -name *Interceptor.java | xargs grep '@Priority' | sed 's/\([^:]*\):\(.*\)/\2 : \1/g' | sed 's/@Priority(Interceptor.Priority.PLATFORM_AFTER + \([0-9]*\))/priority = \1/' | sort`