8.Spring Could Ribbon 集成 - SpringCloud/spring-cloud-radar GitHub Wiki
在此开源项目中,提供了一个基于radar客户端的ribbon集成组件,叫radar-client-springboot-ribbon
,下面就演示一下如何开发一个简单的基于radar ribbon的样例。
本模块假设你已经知道如何部署radar了,不熟悉可以参考前面章节。下载好代码后,执行mvn clean install -DskipTests
将jar 编译到本地仓库中。
按照前面wiki中,快速部署的方式,启动注册中心和portal界面。具体启动方式参考前面快速部署。
需要准备一个纯契约项目,方便provider 和Consumer端引用同样的契约jar。
可以参考代码库中 如样例项目:\radar-demo\radar-demo-dto
新建一个springboot web 项目,在pom文件中添加 契约radar-demo-dto
和 radar 客户端radar-client-springboot
引用。
具体可以参考 \radar-demo\radar-demo-provider
<dependency>
<groupId>com.ppdai.infrastructure</groupId>
<artifactId>radar-demo-dto</artifactId>
<version>0.0.8-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ppdai.infrastructure</groupId>
<artifactId>radar-client-springboot</artifactId>
<version>0.0.8-SNAPSHOT</version>
</dependency>
新建一个restcontroller如下:
@RestController
public class RadarProviderController {
@Autowired
private Environment env;
@PostMapping(value = "/demo")
public RadarDemoResponse demo(@RequestBody RadarDemoRequest request) {
RadarDemoResponse response = new RadarDemoResponse();
response.setResult(IPUtil.getLocalIP()+":"+env.getProperty("server.port"));
return response;
}
}
上面是一个demo 接口,返回当前ip地址和端口,也可以返回自己定义的内容。
然后在application.properties
文件中配置radar注册中心的地址,参考如下
radar.register.url=http://localhost:8080
radar.instance.appId=1010111
radar.instance.clusterName=default
server.port=8085
spring.application.name=radar-demo-provider
radar.instance.candInstanceId=${spring.cloud.client.ipAddress}.${server.port}
radar.register.url 为注册中心地址。 radar.instance.clusterName 为集群名称默认default spring.application.name 为应用名称与radar.instance.appId 一一对应,必须唯一,不能为空 radar.instance.appId 为应用id
然后运行启动,注意端口不能冲突。
在chrome浏览器中打开portal 管理界面,用radar和admin账号登录,然后在实例中可以看到上面注册的实例,然后拉入
。
新建一个radar ribbon消费客户端。具体也可以参考 \radar-demo\radar-demo-consumer-ribbon
。
新建一个restcontroller,demo如下:
@RestController
public class RadarConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/demo")
public RadarDemoResponse demo() {
RadarDemoRequest radarDemoRequest = new RadarDemoRequest();
radarDemoRequest.setTest("hello-world");
//1010111 为provider的appid
return restTemplate.postForEntity("http://1010111/demo", radarDemoRequest, RadarDemoResponse.class).getBody();
}
}
然后在application.properties
文件中配置radar注册中心的地址,参考如下
radar.register.url=http://localhost:8080
server.port=8081
spring.application.name=radar-demo-consumer
radar.instance.registerSelf=false
radar.instance.clusterName=default
注意
radar.instance.registerSelf
的意思是,当前应用是纯消费端,不对外提供服务。默认是服务端。如果是纯消费端不会注册到注册中心上去。
然后启动当前消费端,在chrome 浏览器中输入 http://localhost:8081/demo
会显示调用的服务端的ip和端口信息,如果服务端有多个,显示不同的ip和端口。
至此一个典型的radar 应用项目完成了,可以参考此demo 构建自己的应用。
除了提供spring cloud ribbon 接入以外,也提供传统的proxy接入,对于对spring cloud 不是很熟悉的用户,可以参考\radar-demo\radar-demo-consumer
项目,此项目依赖的是 \radar-client\radar-client-spring-http
项目,此项目代码比较简单,方便用户自行修改,在此不在描述。