armeria

Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.

APACHE-2.0 License

Stars
4.7K
Committers
243

Bot releases are visible (Hide)

armeria -

Published by trustin almost 8 years ago

Bug fixes

  • #325 Do not pop the current RequestContext too early when a Service throws an unexpected exception
  • #327 Fix data corruption in JettyService
  • #329 Fix NPE in HttpRequestSubscriber
armeria -

Published by trustin almost 8 years ago

Breaking changes

  • RequestContext.PushHandle has been replaced with SafeCloseable.

New features

Improvements

  • #323 Update dependencies
    • Jetty 9.3.14.v20161028
    • Jetty ALPN agent 2.0.5
    • Mockito 2.2.10

Bug fixes

  • #322 Backport the fix for broken domain name resolution
armeria -

Published by trustin almost 8 years ago

New features

  • #315 Support HEAD method on HttpHealthCheckService
  • #316 Allow rescheduling server-side request timeout
armeria -

Published by trustin almost 8 years ago

Bug fix

  • #314 Fix form-encoded POST request failure with the Retrofit2 adapter
armeria -

Published by trustin almost 8 years ago

Multi-modularization

From this release, Armeria is split into multiple modules to better organize its growing feature set.

  • armeria - the core API including basic HTTP and Thrift support
  • armeria-grpc - gRPC integration
  • armeria-jetty - Jetty-based HTTP services
  • armeria-logback - (New) Logback integration
  • armeria-retrofit2 - (New) Retrofit2 adapter
  • armeria-tomcat - Tomcat-based HTTP services
  • armeria-zipkin - distributed call tracing support with Zipkin

Please update your project's dependencies.

New features

  • #297 armeria-retrofit2, a new Retrofit2 adapter that uses Armeria as the transport layer
  • #305 armeria-logback, the Logback integration which exports context properties to MDC
  • #311 Make RequestContext.blockingTaskExecutor() context-aware
    • Any tasks submitted to the ExecutorService returned by RequestContext.blockingTaskExecutor() will become context-aware. The ExecutorService will call RequestContext.makeContextWare() automatically on the submitted tasks.
  • #310 Make EndpointGroupRegistry.register() replace and add unregister()
    • EndpointGroupRegistry.replace() has been removed.
    • See the updated API documentation of EndpointGroupRegistry.

Improvements

  • #307 Update dependency versions

Bug fixes

  • #301 #308 Handle an invalid HTTP request URI correctly
  • #306 Fix a directory creation failure when using WAR for TomcatService
  • #309 Include query string in ServiceRequestContext.path() for consistency with ClientRequestContext.path()
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #295 Fix NullPointerException from HttpServerHandler.CLOSE
  • #296 Ensure RequestLog future is completed always before ResponseLog future
  • Make brave-core and brave-http optional dependencies

Clean-up

  • #294 #298 Switch to Gradle
armeria -

Published by trustin about 8 years ago

New features

  • #283 Add RAW_RPC_REQUEST and RAW_RPC_RESPONSE to RequestLog and ResponseLog
  • #292 Log socket traffic at TRACE level
    • All server-side traffic is logged at the logger name com.linecorp.armeria.traffic.server.
    • All client-side traffic is logged at the logger name com.linecorp.armeria.traffic.client.

Improvements

  • #286 Remove unnecessary memory copy between buffer in gRPC streams

Bug fixes

  • #284 Fix missing version number in user-agent HTTP header
  • #285 Fix ByteBuf leak in ArmeriaGrpcServerStream
  • #287 Fix a bug where JSON minification fails for {} in DocService debug form
  • #288 Fix DocService to handle one-way Thrift functions properly
  • #290 #291 Fix a race condition when closing a DefaultStreamMessage
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #282 Fix DropwizardRequestMetrics leak
armeria -

Published by trustin about 8 years ago

New features

  • #263 Add CORS support

    ServerBuilder sb = ...;
    sb.serviceUnder("/foo/bar", myHttpService.decorate(
            CorsServiceBuilder.forOrigin("example.com")
                              .allowRequestMethods(HttpMethod.GET).newDecorator()));
    
  • #272 Expose version information in runtime

    • See com.linecorp.armeria.common.util.Version.
  • #274 #276 Add 'sticky HTTP headers' checkbox in the DocService debug form

    • When the checkbox is checked, the HTTP headers in the debug form are preserved even if you navigate to other functions.
    • Useful when specifying a common header such as authentication token.
  • #280 Allow a user to customize the names of the Dropwizard Metrics metric entries

    • A user can now specify a BiFunction that transforms a RequestLog into a metric name.

Improvements

  • #272 Add version number to the User-Agent header of HttpClient
  • #277 Update the dependencies
    • Brave 3.11.0
    • Jackson 2.7.7
    • Tomcat 8.5.5
    • Netty TCNative BoringSSL (static) 1.1.33.Fork22

Bug fixes

  • #273 #274 (De)serialize large integers in the DocService debug form without losing precision
  • #278 #280 Do not include the full path to the metric names.
    • Client and server side defaults are now <prefix>.<method> and <prefix>.<pathMapping.metricName>.<method> respectively.
    • To generate better server-side logger names and metric names, PathMapping now has two new methods: loggerName() and metricName().
    • See #280 for the detail.
  • #281 Fix NPE in HttpFileService for not-modified files by not sending Content-Type regardless.
armeria -

Published by trustin about 8 years ago

New features

  • #251 Add the getter for SSLSession to ServiceRequestContext

    • A user can get the information about the current TLS session via ServiceRequestContext.sslSession().
  • #252 Add HttpObject.isEndOfStream()

  • #254 Fluent API for building virtual hosts with ServerBuilder

    ServerBuilder sb = new ServerBuilder();
    sb.serviceAt(...) // default virtual host service 1
      .serviceUnder(...) // default virtual host service 2
      .withVirtualHost("*.foo.com")
      .serviceAt(...) // virtual host service 1
      .serviceUnder(...) // virtual host service 2
      .and().build();
    
  • #260 Add support for server-side TMultiplexedProtocol

    THttpService.of(ImmutableMap.of(
            "", (Iface) name -> "none:" + name, // default service
            "foo", (Iface) name -> "foo:" + name, // service 'foo'
            "bar", (Iface) name -> "bar:" + name)) // service 'bar'
    
  • #261 Change metric name of http request/response

    • GET/POST to ${path}#GET/${path}#POST

Improvements

  • #256 Update Netty to 4.1.5.Final
  • #262 Include server-side stack trace in a Thrift client exception

Bug fixes

  • #262 Fix ClassCastException when using Thrift binary type
  • #264 Use daemon threads for default ClientFactory threads
  • #265 Fix NPE in HttpFileServiceTest for files without a detectable mime type
  • #268 Do not set 'connection' header for HTTP/2 messages
  • #269 Do not close Http2ObjectEncoder on an HTTP/2 SETTINGS frame
  • #270 Change user-agent header to be overridable by request

Documentation

  • #257 Fix invalid regular expression in example gradle script
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #250 Fix GrpcService visibility and add missing package-info.java files.
armeria -

Published by trustin about 8 years ago

New features

  • #243 Support client-side TMultiplexedProtocol
    • Append the service name as a URI fragment to use TMultiplexedProtocol: e.g. tbinary+http://127.0.0.1:8080/thrift#myService
  • #244 Lambda expression friendly Service decoration
    • e.g. service.decorate((delegate, ctx, req) -> delegate.serve(ctx, req));
  • #247 Add support for hosting GRPC services
    • See GrpcServiceBuilder and GrpcService

Bug fixes

  • #249 Fix case-sensitive HTTP header value comparison in HttpClientPipelineConfigurator

Known issues

  • The access modifier of the GrpcService class is set to package-local by mistake.
armeria -

Published by trustin about 8 years ago

Improvements

  • #241 Replace two or more consecutive slashes (/) in request path

Bug fixes

  • #239 Set scheme in TomcatService
armeria -

Published by trustin about 8 years ago

New features

  • #238 Add FilteredHttpResponse
  • #236 Add support to HttpFileService for serving pre-compressed files

Bug fixes

  • #237 Make TomcatService compatible with pre-8.5 again
armeria -

Published by trustin about 8 years ago

Features

  • #207 Add an area to DocService debug form to send additional HTTP headers
  • #228 Add support for compressing HTTP server responses (GZIP and Deflate)
    • See HttpEncodingService.
  • #228 Add FilteredStreamMessage which is useful for transforming content stream.
  • #232 Add DeferredStreamMessage and DeferredHttpResponse which allows the deferred instantiation of an actual HttpResponse.
  • #233 Add ConcurrentLimiting(Http)Client which limits the number of concurrent requests.
  • #227 #229 Rename RichPublisher to StreamMessage
    • Backward incompatible change
    • QueueBasedRichPublisher -> DefaultStreamMessage
    • The contract of StreamMessage has been revised for clarity.
    • The package has been renamed from reactivestreams to stream

Improvements

  • #225 Update API documentation
  • #225 Fix the broken example pom.xml in the web site

Bug fixes

  • #230 Fix NPE from MimeTypeUtil when the content type can't be guessed
  • #231 Fix NPE when an HTTP client sends a query to the path with no service bound
  • #231 Fix a bug where maxRequestLength is not enforced for the request to the path with no service bound
  • #234 Set 'content-length' header when creating AggregatedHttpMessage
  • #234 Do not reject HTTP/1.0 requests
  • #235 Missing :scheme header when sending an HTTP/2 request.
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #226 Fix incorrect response timeout behavior
  • #226 Fix a bug where a GET request is sent with the 'transfer-encoding: chunked' header set
armeria -

Published by trustin about 8 years ago

Bug fixes

#224 Fix a bug where SimpleHttpClient omits URI query and fragment

armeria -

Published by trustin about 8 years ago

Bug fixes

  • #222 Do not send an AAAA DNS query when -Djava.net.preferIPv4Stack=true
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #223 Do not send an AAAA DNS query when -Djava.net.preferIPv4Stack=true is set
armeria -

Published by trustin about 8 years ago

Bug fixes

  • #220 Fix RequestContext propagation and callback invocation
    • This will fix incorrect Zipkin call tracing for nested calls.
  • #221 Use RpcRequest.method() as Zipkin span name

Improvements

  • #218 Add equals() and hashCode() to DefaultAggregatedHttpMessage
Package Rankings
Top 5.13% on Repo1.maven.org
Related Projects