調用Consul服務(消費服務)
依賴項
在spring-cloud-consul-client項目中添加依賴項,POM文件內容中添加如下依賴項:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-cloud-starter-consul-discovery為Consul提供支持,spring-cloud-starter-openfeign為HTTP請求提供Feign風格的調用,spring-boot-starter-web僅僅為了使用HTTP MVC測試方便。
配置信息
spring.application.name=spring-cloud-consul-client
server.port=9002
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
#設置不需要注冊到 consul 中
spring.cloud.consul.discovery.register=false
本測試不用把自己注冊到服務中心里:spring.cloud.consul.discovery.register=false,所以在啟動類里也不用聲明@EnableDiscoveryClient注解。
遠程服務調用接口
@FeignClient(name= "service-provider")
public interface ServiceProviderRemote {
@RequestMapping("/hello")
public String Hello(@RequestParam String name);
}
使用openfeign調用遠程服務接口,openfeign是Spring封裝后的Feign,本項目中openfeign需要使用spring-cloud-starter-consul-discovery。
測試消費服務接口
@RestController
public class TestConsul {
@Autowired
ServiceProviderRemote remote;
@RequestMapping("/TestHello")
public String TestHello(){
String first = remote.Hello("first-SWS");
String second = remote.Hello("second-SWS");
return first + " | " + second;
}
@RequestMapping("/Test")
public String Test(){
return "OK";
}
}
為了測試負載均衡所以調用兩次服務接口。
啟動類
@SpringBootApplication
@EnableFeignClients
public class SpringCloudConsulClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConsulClientApplication.class, args);
}
}
在啟動類里需要使用@EnableFeignClients注解啟動openfeign。
啟動項目測試
訪問http://127.0.0.1:9002/TestHello查看結果:
源碼
Github倉庫:https://github.com/sunweisheng/spring-cloud-example