jljlpch / dolphin

基于spring boot支持thrift序列化的http的微服务框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dolphin

基于spring boot支持thrift序列化的http的微服务框架

future

  • 支持thrift序列化的http协议
  • 兼容spring cloud ribbon 配置
  • 支持基于ribbon负载均衡的retryRetryLoadBalancerInterceptor

quick start

client

1.springboot启动时加上支持EnableTHttpInject注解

@EnableTHttpInject

2.启用EnableTHttpInject之后,就可以这样使用http的thriftclient

   @THttpInject(backupServers = {"localhost:9090"}, path = "/sample", serviceName = "dolphin-server")
    Sample.Client tHttpClient;

3.example

@EnableTHttpInject
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public class ClientApplication implements CommandLineRunner {

    @THttpInject(backupServers = {"localhost:9090"}, path = "/sample", serviceName = "dolphin-server")
    Sample.Client tHttpClient;

    public static void main(String[] args) throws TException {
        SpringApplication app = new SpringApplication(ClientApplication.class);
        app.run(args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println(tHttpClient.hello("test"));
    }

}

server

加上THttpService注解,并实现对应的Iface接口 框架会自动根据THttpService的value值为name注册对应的servlet

@THttpService("/sample")
public class SampleController implements Sample.Iface {

    @HystrixCommand(fallbackMethod = "helloFallback")
    @Override
    public String hello(String para) throws TException {
        throw new NullPointerException("");
//        return "hello+"+para;
    }

    @Override
    public boolean ping() throws TException {
        return true;
    }
    public String helloFallback(String para) {
        return "hello_fallback server";
    }
}

client线程安全问题

注入的client实际上是个代理类,真正的处理类已经通过threadlocal解决thrift client多线程的问题

todo

  • 支持spring xml配置

About

基于spring boot支持thrift序列化的http的微服务框架


Languages

Language:Java 100.0%