Welcome to 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.
- Supports HTTP/2 on both TLS and cleartext connections
- Supports protocol upgrade via both HTTP/2 connection preface and traditional HTTP/1 upgrade request
- Fully compatible with existing HTTP/1 servers
- Integrated PROXY protocol support for interoperability with load balancers such as HAProxy and AWS ELB.
Integration with gRPC and Thrift¶
- Your gRPC or Thrift service implementation runs on top of Armeria without any modification.
- Works with the official gRPC or Thrift-over-HTTP client
- Works with the code generated by the official Protobuf or Thrift IDL compiler
- Supports various protocol combinations, such as:
- gRPC-over-HTTP/1 & 2
- Thrift-over-HTTP/1 & 2
- See Running a Thrift service and Running a gRPC service.
Essential features for building microservices¶
Interactive web-based debug console¶
- Browse the list of available RPC operations
- Invoke a RPC operation via a web form
- Share a RPC request with your colleagues so they can reproduce the problem easily
- Just like sharing a cURL command, but works for RPC
- See Browsing and invoking services with DocService.
Completely asynchronous and reactive¶
- Built on top of Reactive Streams and Java 8 CompletableFuture
- Asynchronous connection pool ensures your application never blocks even on pool exhaustion.
- Domain name lookups are also fully asynchronous thanks to Netty’s asynchronous domain name resolver.
Compatibility with existing Java EE web applications¶
- Setting up a project
- Writing a server
- Writing a client
- Advanced topics
- Release notes
- API documentation
- Source cross-reference
- Questions and answers
- Fork me at GitHub