话不多说直接上干货!!
-
先来一个注册中心,所需要的jar包。我使用的方式是创建了一个maven项目然后添加了所需要的jar包,
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>eureka-server</artifactId> <name>eureka-server</name> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
当然你也可以使用IDEA自带的类库Spring Initializr去创建,效果一样
2.在启动类上添加注解,SpringBoot可以单独的用。但是SpringCloud却必须依赖与SpringBoot
3.编写配置文件
server:
port: 8001 # 配置我们注册中心的端口
spring:
profiles:
active: dev
eureka:
server:
waitTimeInMsWhenSyncEmpty: 0
instance:
hostname: 127.0.0.1 # url路径 我采用的是本地路径
client:
# 表明是否自身注册到eureka 服务器上
registerWithEureka: false
# 是否从 eureka 服务器上获得注册信息
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eureka 完整配置地址
启动Main方法,访问localhost:8081
到此Eureka服务注册中心已经完成了。然而并没有结束···
我们继续配置一个服务提供者,注册到Eureka服务注册中心上
1.所需要的jar包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.在启动类上添加@EnableDiscoveryClient注解
3.编写配置文件。注意端口不要重复
server:
port: 8004 #注意端口不要重复
spring:
application:
name: producer-service #服务提供者标识
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8001/eureka/ #注册中心的地址
instance:
prefer-ip-address: true #用两种方式进行注册,一种是使用主机名注册,一种是使用ip地址进行注册,这里使用ip地址进行注册
4.编写一个Controller,当然还是永远的Hello,Word!!
@RestController
public class TestController {
@RequestMapping("/index")
public String index() {
return "HelloWord";
}
}
运行项目
可以在注册中心看到我们刚创建的服务提供者,端口号以及标识名··
我们也去看一下我们的Hello,Word!
到目前为止我们的注册中心,和服务提供者都已经创建完成··
当然还没有结束。我们接着再去创建一个消费者去调用提供者
1.所需要的jar包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.在启动类上添加
@EnableEurekaClient或者@EnableDiscoveryClient注解
@EnableEurekaClient注解只适用与eureka
@EnableDiscoveryClient注解可以是其他
加完注解后,再启动类编写 restTemplate 将 RestTemplate 初始化
@Bean //表示将RestTemplate 配置到bean容器中
@LoadBalanced //表示支持负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
3.编写配置文件
server:
port: 8003
spring:
application:
name: consumers-service
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8001/eureka/
instance:
prefer-ip-address: true #用两种方式进行注册,一种是使用主机名注册,一种是使用ip地址进行注册,这里使用i
现在就可以使用RestTemplate 获取到服务提供者的信息的了
编写一个Service层
@Service
public class HelloService {
@Autowired
private RestTemplate restTemplate;
public String sayHello() {
return restTemplate.getForObject("http://producer-service/index", String.class);
}
}
编写一个Controller
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@RequestMapping("/hello")
public String sayHello(String name) {
return helloService.sayHello() + " " + name;
}
}
然后启动main方法
进入注册中心可以看到刚才创建的消费者
然后我们进入在消费者中hello路径
已经成功调用到了提供者提供的HelloWord了
大功告成
生产者(注册服务) 注册中心(发现服务) 消费者(使用服务)