SpringBoot整合SpringCloud

1.创建eureka-server作为注册中心,引入相关依赖。

<dependencies>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</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>

2.在启动类中添加@EnableEurekaServer来启用Eureka注册中心。
3.配置eureka-server的application.yml文件。

server:
  port: 8761  #eureka服务访问端口
eureka:
  instance:
    hostname: eureka-server #eureka实例的主机名
  client:
    register-with-eureka: false #不把自己注册到eureka上
    fetch-registry: false #不从eureka上获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

4.创建provider-ticket作为服务提供者,引入相关依赖。

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </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>

5.配置provider-ticket的application.yml文件。

server:
  port: 8002
spring:
  application:
    name: provider-ticket
eureka:
  instance:
    prefer-ip-address: true #注册服务时使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

6.创建Service。

@Service
public class TicketService {

    public String getTicket(){
        return "《Hello,SpringCloud》";
    }
}

7.创建consumer-user作为服务消费者,引入和provider-ticket相同的依赖。
8.在启动类中添加@EnableDiscoveryClient开启发现服务功能。
9.配置consumer-user的application.yml文件。

spring:
  application:
    name: consumer-user
server:
  port: 8200
eureka:
  instance:
    prefer-ip-address: true #注册服务时使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

10.在启动类中添加方法创建RestTemplate对象,使用@Bean添加到容器中,并通过添加@LoadBalanced启用负载均衡机制,此机制下默认采用轮询方式。

@LoadBalanced //启用负载均衡机制(默认是轮询方式调用多台服务器,这里是通过多个provider的jar包启动来模拟集群)
@Bean
public RestTemplate restTemplate(){
  return new RestTemplate();
}

11.创建Controller,使用RestTemplate对象调用eureka中注册的服务方法,其中url参数格式为http://+服务名称+请求方法的映射路径。其中,服务名称可以通过访问http://localhost:8761进行查看,已注册的服务信息都可以在上面查找到。

@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String buyTicket(String name){
        //访问localhost:8761中注册的PROVIDER-TICKET服务的/ticket请求
        //获取电影票并转成字符串
        String s=restTemplate.getForObject("http://PROVIDER-TICKET/ticket",String.class);
        return name+"购买了"+s;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容