SpringCloud----Rest和Feign方式調用及負載均衡

服務提供者內容,serverId:member-server

@RestController
public class MemberController {

	@Value("${server.port}")
	private String serverPort;
	
	@RequestMapping("/getMember")
	public String getMember() {
		return "this is member, now the server port is:" + serverPort;
	}
}	

【1】消費者使用rest方式調用:

啓動類:
package com.order;

@SpringBootApplication
@EnableEurekaClient
public class SpringCloudOrderApplication {

	//注入到bean,並開啓負載均衡
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(SpringCloudOrderApplication.class, args);
	}

}

@RestController
public class OrderController {

	@Autowired
	private RestTemplate restTemplate;
	
	@RequestMapping("/getOrder")
	public String getOrder() {
		String url = "http://member-server/getMember";
		String result = restTemplate.getForObject(url, String.class);
		return result;
	}
	
}

【2】Feign調用方式

引入依賴:

      <!-- SpringCloud整合feign客戶端依賴 -->
	  <dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
	  </dependency>

最好在application.yml裏面配置一下客戶端超時時間

###設置feign客戶端超時時間
ribbon:
  ###指的是建立連接所用的時間,適用於網絡狀況正常的情況下,兩端連接所用的時間。
  ReadTimeout: 5000
  ###指的是建立連接後從服務器讀取到可用資源所用的時間。 
  ConnectTimeout: 5000

新建接口:MemberApiFeign

@FeignClient(name="member-server")
public interface MemberApiFeign {

	@RequestMapping("/getMember")
	public String getMember();
	
}

調用服務器方法:

package com.order.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.order.api.MemberApi;

@RestController
public class OrderController {

	@Autowired
	private MemberApiFeign memberApiFeign;
	
	@RequestMapping("/getOrder")
	public String getOrder() {
		return memberApiFeign.getMember();
	}
	
}

區別:

(1)Rest方式是要手動開啓負載均衡的,並且要注入到Bean纔可使用(不要用new的方式)。Feign方式是要引入依賴,默認自動就開啓了負載均衡的。

(2)Rest方式每次調用服務端方法時都要寫地址,很噁心。但是Feign方式就不一樣了。只需要設置@FeignClient就可以自動映射服務端的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章