我们书接上回来继续搭建springCloud
服务消费者
今天我这搭建Ribbon模式的消费者
consumer是服务的消费者。
consumer调用provider有两种模式,Ribbon模式和Feign模式,先创建一个Ribbon模式的consumer。
依然是创建module,还是选择Spring Initializr,Group和前面的eureka-server写成一样的com.lkforce.cloud,Artifact和Name就叫consumer-ribbon
next,和provider一样选择Spring Cloud Discovery->Eureka Discovery Client,还有Web->SpringWeb
然后我们修改配置文件:
server.port: 8764 #端口
spring.application.name: consumer-ribbon #名称
eureka.client.service-url.defaultZone: http://localhost:8761/eureka/ #生产者路径
接着在启动类前添加注解:@EnableEurekaClient并且创建一个RestTemplate对象语句如下:
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
添加到启动类中.
紧接着我们创建一个创建Service,用来调用provider接口:
就是正常的Service
@Autowired
RestTemplate restTemplate;
public String hiService(String name) {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());//头部自定义参数
JSONObject jsonObj = JSONObject.fromObject(params);//对象转换json
HttpEntity<String> formEntity = new HttpEntity<String>(jsonObj.toString(), headers); //使用resttemplate发送参数的格式
String result = restTemplate.postForObject(url, formEntity, String.class); //String.class对应调用方法返回的参数
return result; //放回结果
//由于博主只用到了一个参数使用我用到了下面的方法
return restTemplate.getForObject("http://provider/hi?name="+name,List.class);
}
然后controller调用Service即可.
调用JSONObject需要用到一下jar包
<!--json转换-->
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
这样一个消费者就搭建完成了.
接下来我们搭建网关
照例创建module,还是选择Spring Initializr,Group和前面的eureka-server写成一样的com.lkforce.cloud,Artifact和Name就叫zuul-server,next,除了选择Spring Cloud Discovery->Eureka Discovery Client,还有Web->SpringWeb之外,还需要Spring Cloud Routing下的Zuul.
创建module后,修改application.property:
server.port: 8769
spring.application.name: service-zuul
eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
zuul.routes.api-a.path: /api-a/**
zuul.routes.api-a.service-id: consumer-ribbon #这里的名字为生产者的名字
然后在启动类添加@EnableEurekaClient和@EnableZuulProxy注解
然后调用http://localhost:8769/api-a/加上接口名就可以调用了.
剩下的配置中心config-server,config-client我将会在下一篇文章讲解.