armeria-0.93.0
What is Armeria?
Armeria is an open-source asynchronous HTTP/2 RPC/REST client/server library built on top of Java 8, Netty, Thrift and gRPC. Its primary goal is to help engineers build high-performance asynchronous microservices that use HTTP/2 as a session layer protocol. Visit the official web site and follow @armeria_project to check out many cool features you can't find in the official gRPC/Thrift implementation or other microservice frameworks.
New features
- You can now create a
Samplerfrom a specification string such asrandom=0.1andrate-limited=10. #2108- This is going to be useful when you want to make the sampling policy of
Brave{Client,Server}orLogging{Client,Server}configurable from external sources such as a configuration file or a system property.
Sampler<Object> randomSampler = Sampler.of("random=0.1"); Sampler<Object> rateLimitedSampler = Sampler.of("rate-limited=10"); Sampler<Object> alwaysSampler = Sampler.of("always"); Sampler<Object> neverSampler = Sampler.of("never");
- This is going to be useful when you want to make the sampling policy of
- You can now specify the
Samplerspecification string in thecom.linecorp.armeria.verboseExceptionssystem property. #2105 #2111- From this release, the default value of this property is
rate-limited=10which means the stack trace of the exceptions will be recorded at the maximum rate of 10 exceptions/sec. Previously, the default value of this property wasfalse, which eliminates all stack traces, which gave our users a hard time figuring out why.
- From this release, the default value of this property is
- You can now specify a common path prefix using
@PathPrefixannotation in annotated services. #2031 #2099@PathPrefix("/users") public class MyUserService { @Get("/{id}") // Mapped to '/users/{id}' @ProducesJson public User getUser(@Param int id) { ... } ... } Server server = new ServerBuilder() .annotatedService(new MyUserService()) .build();
Bug fixes
- Fixed a memory leak in
HealthCheckService. #2110 - Prometheus and Dropwizard Metrics are now optional dependencies in
armeria-spring-boot-*. #2106 #2107 armeria-spring-boot-actuator-autoconfiguredoes not refuse to start anymore whenHealthStatusHttpMapperis missing. #2104
Breaking changes
Flags.verboseExceptions()has been replaced withverboseExceptionSampler()andverboseExceptionSamplerSpec(). #2111Exceptions.isVerbose(), which was deprecated previously, has been removed. #2111- You may need to add
io.micrometer:micrometer-registry-prometheusorio.dropwizard.metrics:metrics-jsonafter upgrading if you were depending on them transitively. #2107
Dependencies
- Netty 4.1.41 -> 4.1.42
- Netty TCNative BoringSSL 2.0.25 -> 2.0.26
- Project Reactor 3.2.12 -> 3.3.0
- Prometheus 0.6.0 -> 0.7.0
- Retrofit 2.6.1 -> 2.6.2
Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests: