1、介绍

2、快速开始

父工程的maven 配置文件,如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.mindasoft</groupId>
<artifactId>spring-cloud-eureka-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <name>feign-eureka</name>
<description>Demo project for Spring Cloud</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <modules>
<module>server</module>
<module>client</module>
</modules> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<!--skip deploy (this is just a test module) -->
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build> </project>

2.1、服务注册

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.mindasoft</groupId>
<artifactId>spring-cloud-eureka-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>spring-cloud-eureka-provider</name>
<description>Demo project for Spring Cloud</description> <parent>
<groupId>com.mindasoft</groupId>
<artifactId>spring-cloud-eureka-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

application.yml

spring:
application:
name: provider-service server:
port: 9001 eureka:
client:
serviceUrl:
defaultZone: http://localhost:9000/eureka/
instance:
leaseRenewalIntervalInSeconds: 10
metadataMap:
instanceId: ${spring.application.name}:${spring.application.instance_id:${server.port}}

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient // Eureka Client 标识
@SpringBootApplication
public class EurekaHelloProviderApplication { public static void main(String[] args) {
SpringApplication.run(EurekaHelloProviderApplication.class, args);
}
}

服务提供

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* Created by huangmin
*/
@RestController
public class HelloProvider { private static final Logger logger = LoggerFactory.getLogger(HelloProvider.class); @Value("${server.port}")
private int port; @Autowired
private Registration registration; // 服务注册 --> EurekaRegistration @RequestMapping("/hello")
public String provider() {
return "Hello,I'm Provider!My port is :" + port + ",serviceId:" + registration.getServiceId() + " :" + registration.getInstanceId();
} }

2.2、服务发现

maven配置文件,与服务注册仅名称不一样,其他都是相同的。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.mindasoft</groupId>
<artifactId>spring-cloud-eureka-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>spring-cloud-eureka-consumer</name>
<description>Demo project for Spring Cloud</description> <parent>
<groupId>com.mindasoft</groupId>
<artifactId>spring-cloud-eureka-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

application.properties

server.port=9002

# 服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:9000/eureka/ # 服务名称
spring.application.name=consumer-service

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerApplication { @Bean
RestTemplate restTemplate() {
return new RestTemplate();
} public static void main(String[] args) {
SpringApplication.run(EurekaConsumerApplication.class, args);
}
}

消费者

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; /**
* Created by huangmin on 2017/11/10 14:30.
*/
@RestController
public class HelloConsumer { private static final Logger logger = LoggerFactory.getLogger(HelloConsumer.class); @Autowired
private DiscoveryClient discoveryClient; // 服务发现客户端 @Autowired
private RestTemplate restTemplate; // HTTP 访问操作类 @RequestMapping("/hello")
public String provider() {
ServiceInstance instance = serviceInstance();
logger.info("provider service, host = " + instance.getHost()
+ ", service_id = " + instance.getServiceId());
String providerMsg = restTemplate.getForEntity(instance.getUri() + "/hello",
String.class).getBody();
return "Hello,I,m Consumer!discovery a provider:"+ instance.getHost() + ":" + instance.getPort()
+ "<br/> msg from provider : <br/><br/> " + providerMsg;
} /**
* 获取当前服务的服务实例
*
* @return ServiceInstance
*/
public ServiceInstance serviceInstance() {
List<ServiceInstance> list = discoveryClient.getInstances("provider-service");
if (list != null && list.size() > 0) {
return list.get(0);
}
return null;
}
}

启动后台,访问http://127.0.0.1:9002/hello,页面显示如下:

Hello,I,m Consumer!discovery a provider:localhost:9001

msg from provider :

Hello,I'm Provider!My port is :9001,serviceId:provider-service :localhost:provider-service:9001

最新文章

  1. phpcms v9常用方法
  2. 一步一步学ROP之linux_x86篇
  3. PHP拦截器之__set()与__get()的理解与使用
  4. Android滑动选择的日期选择框
  5. set_union的几个例子
  6. 转: Android基于HLS和RTMP协议的第三方SDK选择
  7. 【风马一族_xml】xml语法
  8. 用一个例子学习CSS的伪类元素
  9. JavaScript一道面试题求y的值是? z 的值是? s的值是?
  10. USB (Universal Serial Bus)
  11. PowerBI开发 第四篇:DAX表达式
  12. python + django + echart 构建中型项目
  13. cocos图片的选择以及压缩
  14. 《JavaScript高级程序设计》笔记:变量、作用域和内存问题(四)
  15. javascript 对象(四)
  16. PHP实现数据分页显示
  17. The .NET weak event pattern in C#
  18. 如何在Maven和Gradle中配置使用Groovy 2.4与Spock 1.0
  19. 《Linux Device Drivers》第十五章 内存映射和DMA——note
  20. 《Haskell趣学指南》

热门文章

  1. Vulnhub靶机系列之Acid
  2. GitHubPages的域名解析信息
  3. python开发: linux进程打开的文件数
  4. 7.3php编译安装最终版
  5. docker 网络概述及网络模式详解
  6. Docker创建私有镜像仓库
  7. find+grep+正则表达式
  8. mysqlCRUD
  9. 第三章 in,not in 的理解,limit限制结果集
  10. shell脚本部署redis以及redis主从复制和redis-cluster集群