上一篇文章《SpringCloud搭建註冊中心與服務註冊》介紹了註冊中心的搭建和服務的註冊,本文將介紹下服務消費者調用服務提供者的過程。java
1、服務調用流程2、服務提供者3、服務消費者4、服務調用實戰git
整體流程是首先啓動註冊中心,服務提供者提供服務並註冊到註冊中心,消費者從註冊中心中獲取服務並執行。github
實現服務調用須要有三個角色:服務註冊中心、服務提供者和服務消費者,其中服務註冊中心和服務提供者上一篇文章已經實現了,下面會詳細演示下服務消費者搭建並調用服務的過程。web
改造下上篇文章中的服務提供者,添加一個controller,UserController.java代碼以下:spring
/**
* 用戶服務
*/
@Slf4j
@RestController
@RequestMapping("/provider")
public class UserController {
static Map<Integer, User> userMap = new HashMap<>();
static {
//模擬數據庫
User user1 = new User(1, "張三", "123456");
userMap.put(1, user1);
User user2 = new User(2, "李四", "123123");
userMap.put(2, user2);
}
/**
* 根據id 查詢
*/
@RequestMapping("/getUser")
public String getUser(Integer id) {
User user = userMap.get(id);
return JSON.toJSONString(user);
}
}
首先新建一個SpringBoot項目,命名spring-cloud-user-consumer,而後按照下面步驟編寫代碼便可。數據庫
添加eureka-server的依賴,代碼以下:springboot
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version><!-- eureka版本 -->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
啓動類添加註解@EnableDiscoveryClient,添加該註解後,項目就具備了服務註冊的功能,代碼以下:併發
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudUserConsumerApplication {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(SpringCloudUserConsumerApplication.class, args);
}
}
使用yml的配置文件,application.yml配置以下:app
server:
port: 8082 #服務端口
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9001/eureka/
spring:
application:
name: user-service-consumer
代碼編寫以後,按順序啓動spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先訪問註冊中心http://localhost:9001/,出現下圖說明註冊中心和兩個服務以及註冊成功。機器學習
打開postman訪問http://localhost:8082/consumer/getUser?id=2,出現下圖後說明服務已經調用成功。
到此SpringCloud實現服務間調用功能已經所有實現,有問題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
推薦閱讀
1.SpringCloud搭建註冊中心與服務註冊
2.SpringBoot整合ActiveMQ,看這篇就夠了!
3.別在 Java 代碼裏亂打日誌了,這纔是正確的打日誌姿式!
4.編碼神器Lombok,學會後開發效率至少提升一倍!
5.利用Spring Boot+zxing,生成二維碼還能這麼簡單
Java碎碎念公衆號限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高併發分佈式、大數據、機器學習等技術。
關注下方公衆號便可免費領取: