Releases: line/armeria
Releases · line/armeria
armeria-0.11.0.Final
New features
- #114 Distributed tracing via Zipkin/Brave
This release introduces distributed tracing capability to Armeria clients and servers using Brave, a distributed tracing library compatible with Zipkin. This enables us to watch timing data among the whole Armeria RPC chain.
Decorating a client
// Create a brave instance with service name, span collector, and sampling rate.
Brave brave = new Brave.Builder("MyClientMain")
.spanCollector(new ScribeSpanCollector("127.0.0.1", 9410))
.traceSampler(Sampler.create(0.01f))
.build();
MyService.Iface client =
new ClientBuilder("tbinary+http://127.0.0.1:8080/thrift/myService")
.decorator(HttpTracingClient.newDecorator(brave))
.build(MyService.Iface.class);
Decorating a server
// Create a brave instance with service name, span collector, and sampling rate.
Brave brave = new Brave.Builder("MyServiceMain")
.spanCollector(new ScribeSpanCollector("127.0.0.1", 9410))
.traceSampler(Sampler.create(0.01f))
.build();
ServerBuilder builder = new ServerBuilder();
builder.port(8080, SessionProtocol.HTTP);
builder.serviceAt("/thrift/myservice",
ThriftService.of(new MyServiceHandler(brave))
.decorate(HttpTracingService.newDecorator(brave));
Bug fixes
armeria-0.10.0.Final
New features
-
#110 Provide a way to create a
TomcatService
from an existing TomcatConnector
- Useful when using an embedded Tomcat already with other library such as Spring Boot:
ServerBuilder sb = new ServerBuilder(); sb.serviceUnder("/tomcat", TomcatService.forConnector("example.com", springBootConnector));
-
#115 DropWizard Metrics support
- Use
MetricCollectingClient
andMetricCollectingService
to collect the metrics of your clients and services:
ServerBuilder sb = new ServerBuilder(); sb.serviceAt( "/thrift/foo", ThriftService.of(...).decorate( MetricCollectingService.newDropwizardDecorator("fooService", metricRegistry)); ClientBuilder cb = new ClientBuilder(...); cb.decorator(MetricCollectingClient.newDropwizardDecorator("barService", metricRegistry));
- Use
Improvements
- #117 Upgrade Netty to 4.1.0.CR3
armeria-0.9.0.Final
New features
- #96 Add more configuration properties to
TomcatService
- #97 Add a way to create a derived client
- You can create a new client with different
ClientOptions
more efficiently usingClients.newDerivedClient()
.
- You can create a new client with different
- #107 More efficient and correct H1C-to-H2C upgrade
SessionProtocolNegotiationCache
now keeps the recent HTTP/2 upgrade failures so that Armeria does not send an upgrade request to the hosts known to be incapable of HTTP/2. This should reduce the number ofHEAD / HTTP/1.1
upgrade requests in your H1C connections.
Improvements
Bug fixes
- #99 Check all interfaces, including ancestor interfaces, when analyzing Thrift handler
- #100 Send the correct 'Host' header when upgrading
Documentation
armeria-0.8.0.Final
New features
- #93 Revamp the client-side decorator API
- It is now as convenient as for the server side to decorate a client.
- See
ClientBuilder.decorator()
for more information.
- #84 Add
Server.nextEventLoop()
so that a user can get one of the available NettyEventLoop
s.
Bug fixes
armeria-0.7.0.Final
- #77 More robust resolution/rejection of an invocation promise
- #78 Use jetty-alpn-agent to simplify
pom.xml
- #79 Add methods to
ServiceInvocationContext
for propagating context into callbacks
armeria-0.6.4.Final
armeria-0.6.3.Final
armeria-0.6.2.Final
- #68 Fix a leak in a long-living HTTP/2 connection
armeria-0.6.1.Final
- #66 Handle HTTP/2 upgrade response properly so that Netty does not complain about unhandled messages
armeria-0.6.0.Final
Visit the milestone page for the detailed change list.
Debug form (DocService)
- Sending a debug form in a
DocService
page will add a URL hash which contains the content of the debug form to the current browser location. A user could share the URL, so that the recipient sees a pre-populated debug form. - A user can specify sample Thrift arguments when constructing a
DocService
so that theDocService
can populate a better JSON template in a debug form.
Server-side metrics
- Added
MetricCollectingService
as a preparatory step for implementing concrete metrics support
HttpService
- Added
HttpService.orElse()
that allows combining twoHttpService
into one. e.g.HttpFileService.for(...).orElse(TomcatService.for(...)
Core
- The name of the
Logger
returned byServiceInvocationContext.logger()
has changed.- It's
armeria.services.<service_path_prefix>
by default. e.g.armeria.services.hello.thrift
for/hello/thrift
- The service logger name can be customized via
ServerBuilder.serviceLoggerNamePrefix()
and by specifying the logger name when binding a service viaServerBuilder.service()
orVirtualHostBuilder.service()
.
- It's
- Renamed
ServiceEntry
toServiceConfig
- Added parent getter methods to the configuration classes for better user experience:
ServiceConfig.virtualHost()
ServiceConfig.server()
VirtualHost.server()
ServerConfig.server()
- The signatures of the following methods have been changed:
Service.serviceAdded(ServiceConfig)
ServiceCodec.decodeRequest(ServiceConfig, ...)
ServiceCodec.codecAdded(ServiceConfig)
ServiceHandler.handlerAdded(ServiceConfig)