Set of cool annotations that helps you building Thrift applications with Spring Boot.
Its very simple:
repositories {
jcenter()
}
compile 'info.developerblog.spring.thrift:spring-thrift-starter:1.4.0.RELEASE'
Annotation @ThriftController("servlet_path") helps you building server controller for request processing
@ThriftController("/api")
public class TGreetingServiceController implements TGreetingService.Iface {
@Override
public String greet(TName name) throws TException {
// your logic
}
}
@ThriftClient(serviceId = "registered_service", (path) = "server_handler_path") helps you with multithreaded client with full Spring Cloud support.
@ThriftClient(serviceId = "greeting-service", path = "/api")
TGreetingService.Client client;
@ThriftClientsMap(mapperClass) annotation helps to create a string-keyed map of clients for a set of services having the same interface, allowing to define the concrete callee instance at runtime:
@ThriftClientsMap(mapperClass = SampleMapper.class)
Map<String, TGreetingService.Client> clientsMap;
Mapper class requirements:
- must extend AbstractThriftClientKeyMapper
- must be registered as a bean in the application context
greeting-service: #service name
endpoint: http://localhost:8080/api #direct endpoint
ribbon: #manually ribbon
listOfServers: localhost:8080
path: /service #general path
connectTimeout: 1000 #default=1000
readTimeout: 10000 #default=30000
thrift.client.max.threads: 10 #default=8
If you use service discovery backend (as Eureka or Consul) only path maybe needed.
See tests for better understanding.
Since 1.0.0 starter have supported Spring Cloud Sleuth for tracing.