調用Consul服務(消費服務)


調用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查看結果:
Alt text

源碼

Github倉庫:https://github.com/sunweisheng/spring-cloud-example


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM