SpringBoot + Consul + thrift

来源:互联网 发布:php微商城源码 编辑:程序博客网 时间:2024/06/08 05:16


本文是实际项目开发摘出的案例,仅供参考用法,完整案例源码需要的留言。


SpringBoot 搭建,忽略,主要是建项目框架,引入一些需要的包。


一、Consul搭建:

 

1、 下载consul压缩包,解压到本机D盘,官网地址:https://www.consul.io/downloads.html

 

2、 配置环境变量PATH:D:\consul_1.0.0_windows_amd64

 

3、 在本机新建文件夹,用来存放生成的文件  C:/dev/consul

 

4、 本机启动命令:consul agent -dev

 

5、 本机加入”指定地址的服务”命令:

 

consul agent -server -bootstrap-expect 3-data-dir C:/dev/consul -node=节点名 -join 想要加入的服务ip

例如:加入别人(192.168.1.197)的服务:

consul agent -server -bootstrap-expect 3-data-dir C:/dev/consul -node=test -join 192.168.1.197

 

C:/dev/consul:存放文件的路径

node:为加入的节点名

join:要为加入的服务地址

 

 

二、编写Thrift接口:

 

1、 首先在model.thrift中,创建相应model,

以及在StandardService.thrift中,创建相应接口

 

struct HelloWord {
    1: string str
}

 

service HelloWorldService{
    model.HelloWord sayHello(1:stringstr)
}

 

 

2、 执行脚本文件,生成service代码,以及model代码

3、 写实现层代码:

 

4、 @Service
public class HelloWordServiceImpl implements HelloWorldService.Iface {

    @Override
    public HelloWord sayHello(String str)throws TException {
        HelloWord helloWord = newHelloWord();
       helloWord.setStr("hello");
        return helloWord;
    }

}

5、 注册服务:

 

@Autowired
private HelloWorldService.Iface helloWorldService;

processor.registerProcessor("HelloWorldService",
        new HelloWorldService.Processor<>( helloWorldService));  //原文地址:http://blog.csdn.net/u012888052/article/details/78890654

6、 写接口调用:

 

@Api("测试数据API")
@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private ConsulServiceSelectorconsulServiceSelector;

    @ApiOperation(value = "查看订单列表")
    @GetMapping("/getTest")
    public String getOrderList() {
        TTransport transport = null;
        ClusterService service =getStandardService();
        transport = new TFramedTransport(
            newTSocket(service.getAddress(), service.getPort()));
       System.out.println(service.getAddress() + " ||| " +service.getPort());
        try {
            transport.open();
        } catch (TTransportException e) {
            e.printStackTrace();
        }
        TProtocol protocol = newTBinaryProtocol(transport);
//        TMultiplexedProtocol mpStandard= new TMultiplexedProtocol(protocol, "UnitService");
//        UnitService.Client client = newUnitService.Client(mpStandard);
//原文地址:http://blog.csdn.net/u012888052/article/details/78890654
        TMultiplexedProtocol mpStandard =new TMultiplexedProtocol(protocol, "HelloWorldService");
        HelloWorldService.Client client =new HelloWorldService.Client(mpStandard);

        try {
            System.out.println(client.sayHello("1"));
            return "" +client.sayHello("2");
        } catch (TException e) {
            e.printStackTrace();
        }

        return "Error HelloWord";
    }

 

 

 

 

 

以上,重要代码已经贴出,比较懒,版面没排好。

想研究下源码的朋友请扫码留言。



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 呗飞鸟 呗的读音 呗先生 呗是什么意思 呗的拼音 消防员 消防员招录宣传片 少先队员手抄报 男童见消防员变话痨 调研员什么级别 少先队员 保育员 调研员级别 消防员200米高空营救 假如消防员说实话 调研员 一级调研员 领航员 共青团员 自宅警备员 施工员 跟车送货员 少先队员简笔画 信息员 收费员5年截留水费684万 消防员全程英文救援相片 当消防员遇见话唠小朋友 消防员回头瞬间让人心疼 色员外 员外 王员外休妻 色员外番外 员外之女 张十八员外古诗 秋夜寄邱员外 老员外干丫头 员外是什么意思 员外老爷糟踏丫头 秋夜寄丘员外