SpringCloud(二)Eureka叢集與Feign
阿新 • • 發佈:2018-12-29
兩個Eureka
上一篇是兩個服務像一個Eureka註冊,如果Eureka宕掉了就不好了,現在來搭建兩個Eureka,兩個服務分別像其註冊。兩個Eureka都用本機來模擬,用兩個埠號來表示。
首先修改C:\Windows\System32\drivers\etc的hosts檔案,在最下面新增127.0.0.1 node1 node2
,然後將dis-manager工程的application.properties一個變成兩個
server.port=8888 eureka.instance.hostname=node1 # 不向註冊中心註冊自己 eureka.client.register-with-eureka=false # 不需要檢索服務 eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://node2:${server.port}/eureka/
server.port=9999
eureka.instance.hostname=node2
# 不向註冊中心註冊自己
eureka.client.register-with-eureka=false
# 不需要檢索服務
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://node1:${server.port}/eureka/
接下來使用mvn clean package
命令將整個工程打成jar包,並且切換到jar包的位置使用java -jar dis-manager-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
哦對了,服務註冊的時候需要將兩個Eureka都註冊一下。
eureka.client.serviceUrl.defaultZone=http://node1:8888/eureka/,http://node2:9999/eureka/
使用Feign宣告式呼叫
因為Feign相較ribbon更加簡單優雅,我們公司都是用的Feign,由於我們是在order服務中呼叫user服務,所以在order服務中設定。具體只需要三個步驟:
1.引入依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
將order服務的主類添加註解@EnableFeignClients
2.在order服務中建立被呼叫user服務的介面
@FeignClient(name = "dis-user")
public interface UserFeign {
@RequestMapping("/user/getUser")
User getUser();
}
3.在order服務的controller裡呼叫
@Autowired
private UserFeign userFeign;
Logger logger = LoggerFactory.getLogger(OrderController.class);
@RequestMapping("/getOrderByFeign")
public Order getOrderByFeign() {
User user = userFeign.getUser();
Order order = new Order(1001, "酸牛奶", user);
logger.info(order.toString());
return order;
}
程式碼比較簡單,都放在Github上了https://github.com/Bihanghang/Dis-SpringBoot,有問題希望一起探討。