实现

生成微服务框架

  1. 点击“代码生成器.exe”
  2. 输入相关信息,参考如下表格
说明
是否是生成API接口(Y/N) N N 表示生成微服务框架
请输入要生成的项目名称 zebra-sample-start-svc1 输入接口对应的 artifactId
输入groupId com.guosen.zebra.sample groupId

引入依赖

在 pom.xml 里面添加如下依赖

  1. <dependency>
  2. <groupId>com.guosen</groupId>
  3. <artifactId>zebra-core</artifactId>
  4. <version>${zebra.version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.guosen.zebra.sample</groupId>
  8. <artifactId>zebra-sample-start-svc1-api</artifactId>
  9. <version>1.0.0-SNAPSHOT</version>
  10. </dependency>

注:将 ${zebra.version} 替换为使用的 Zebra 版本

如上,引入接口定义对应的包 zebra-sample-start-svc1-api

代码开发

1.新建包

com.guosen.zebra.sample.start.svc1.service.impl

2.在此包下添加实现类HelloServiceImpl

package com.guosen.zebra.sample.start.svc1.service.impl;


import com.guosen.zebra.core.grpc.anotation.ZebraService;
import com.guosen.zebra.sample.start.svc1.model.hello.HelloReply;
import com.guosen.zebra.sample.start.svc1.model.hello.HelloRequest;
import com.guosen.zebra.sample.start.svc1.service.HelloService;

@ZebraService
public class HelloServiceImpl implements HelloService {

    @Override
    public HelloReply sayHello(HelloRequest hellorequest) {
        long currentTime = System.currentTimeMillis();
        String message = String.format("Hi, %s From svc1, time : %d", hellorequest.getName(), currentTime);

        HelloReply helloReply = new HelloReply();
        helloReply.setMessage(message);

        return helloReply;
    }
}

如上图,该实现类实现了接口 com.guosen.zebra.sample.start.svc1.service.HelloService,并且添加了 @ZebraService 注解,以便对外暴露服务。

注意 : 一个微服务只能有一个被 @ZebraService 注解的类,也就是对外暴露 gRPC 接口只能通过一个 Service 类来,不能通过多个 Service 类暴露。

3.修改App.java的配置

@ZebraConf(confName="com.guosen.examples.service.HelloService")

修改为

@ZebraConf(confName="com.guosen.zebra.sample.svc1.HelloService")

最终代码如下

package com.guosen;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.guosen.zebra.ZebraRun;
import com.guosen.zebra.core.grpc.anotation.ZebraConf;

@SpringBootApplication
@ZebraConf(confName="com.guosen.zebra.sample.svc1.HelloService")
public class App {
    public static void main(String[] args) throws Exception {
        ZebraRun.run(args, App.class,false);
    }
}

打包

执行如下命令,打包微服务。

mvn clean package