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";
}
以上,重要代码已经贴出,比较懒,版面没排好。
想研究下源码的朋友请扫码留言。