Skip to content

armeria-0.76.0

Choose a tag to compare

@trustin trustin released this 23 Nov 10:10
bb5d6fd

New features

  • Added a new module armeria-spring-boot-webflux-autoconfigure which allows you to use Armeria as the web server and client implementation of Spring WebFlux. #1326
    • By using Armeria instead of Spring's default implementation, you get:
      • Rich support for Apache Thrift and gRPC, including the fancy web console that enables you to send Thrift and gRPC requests from a web browser
      • Ability to run HTTP REST service and RPC service in the same port
      • Full HTTP/2 support for both server-side and client-side, including h2c (plaintext HTTP/2)
      • PROXY protocol support which provides interoperability with load balancers such as HAProxy and AWS ELB
    • Read the official documentation to learn how to integrate Armeria with Spring Boot and WebFlux.
  • Zipkin spans reported by Armeria now include 'wire send' and 'wire receive' timestamps. #1423
  • Made health check port in HttpHealthCheckedEndpointGroup customizable. #1431
  • Added more utility methods to EventLoopGroups. #1438 #1445
  • Added CircuitBreakerClientBuilder which helps you apply CircuitBreaker pattern: #1418
    final CircuitBreakerStrategy strategy = CircuitBreakerStrategy.onServerErrorStatus();
    final HttpClient client = new HttpClientBuilder(...)
            .decorator(new CircuitBreakerHttpClientBuilder(strategy)
                               .circuitBreakerMapping(CircuitBreakerMapping.ofDefault()
                               .newDecorator())
            .build();
    
    final AggregatedHttpMessage res = client.execute(...).aggregate().join();
    

Improvements

Bug fixes

  • Removed unnecessary dependencies from armeria-bom.
    • armeria-bom will now define the versions of Armeria artifacts only. For example, previously, armeria-bom defined the versions of Armeria's transitive dependencies such as Guava and Netty, but we do not from this release.
  • Fixed a bug where Thrift one-way call responses are not sent early enough. #1368 #1455
  • Fixed a bug where :authority header is not set properly when RetryingClient is used. #1433
  • Fixed a bug where Armeria attempts to set an empty string to Zipkin's Span.remoteServiceName. #1434
  • Fixed a bug where SAML KeyStoreCredentialResolverBuilder does not raise FileNotFoundException when it failed to find the specified resource. #1439
  • Fixed NullPointerException raised by AbstractStreamMessageDuplicator and its subtypes. #1446 #1449

Breaking changes

  • From this release on, we distribute shaded JARs only. If you were using shaded JARs, you have to remove the -shaded suffix from all Armeria artifact IDs. You should not see any differences besides that because all Armeria artifacts are now distributed as shaded JARs by default. #1435
  • Since we removed unnecessary dependencies from armeria-bom, your build might fail to resolve some of your dependencies if you relied on armeria-bom for the version numbers of non-Armeria dependencies.
  • KeyedChannelPoolHandler and its subtypes have been replaced with ConnectionPoolListener and its respective subtypes. #818 #1441
  • (Retry|CircuitBreaker)Strategy are split into (Retry|CircuitBreaker)Strategy and (Retry|CircuitBreaker)StrategyWithContent. #1418
    • Use (Retry|CircuitBreaker)Stategy unless you need to retry by looking into the response content, because it reduces performance.

Dependencies

  • Brave 5.5.0 -> 5.5.1
  • Jetty 9.4.12 -> 9.4.14
  • Project Reactor 3.2.2 -> 3.2.3
  • netty-tcnative-boringssl-static 2.0.19 -> 2.0.20
  • Tomcat 9.0.12 -> 9.0.13, 8.5.34 -> 8.5.35