服务中心

  • 导入依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • 配置文件
1
2
3
4
5
6
7
8
9
10
11
server:
port: 8761

eureka:
instance:
hostname: eureka-server #eureka实例的主机名
client:
register-with-eureka: false #不把自己注册到eureka上
fetch-registry: false #不从eureka上获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka
  • Application.java
1
@EnableEurekaServer

提供者

  • 导入依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
server:
port: 8002

spring:
application:
name: provider-ticket

eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka
  • service
1
2
3
4
5
6
7
8
9
10
11
package com.kagarise.providerticket.service;

import org.springframework.stereotype.Service;

@Service
public class TicketService {

public String getTicket() {
return "《厉害了,我的国》";
}
}
  • controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.kagarise.providerticket.controller;

import com.kagarise.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TicketController {

@Autowired
TicketService ticketService;

@GetMapping("/ticket")
public String gteTicket() {
return ticketService.getTicket();
}
}

消费者

  • 依赖/配置文件同上 eg : spring.application.name: consumer-user
  • controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.kagarise.consumeruser.controller;

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

@RestController
public class userController {

@Autowired
RestTemplate restTemplate;

@GetMapping("/buy")
public String buyTicket(String name) {
String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
return name + "购买了" + s;
}
}
  • Application.java
1
2
3
4
5
6
7
@EnableDiscoveryClient

@LoadBalanced // 负载均衡(轮询)
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}