91-java-springcloud(04)-注册中心(3)-Consule

Consule

在这里插入图片描述

一.Consule简介

1.是什么?
https://www.consul.io/intro/index.html
在这里插入图片描述
2.能干嘛?

  • 服务发现

  • 健康监测

  • KV存储

  • 多数据中心

  • 可视化Web界面

在这里插入图片描述

3.去哪下?
https://www.consul.io/downloads.html
在这里插入图片描述
4.怎么玩?
https://www.springcloud.cc/spring-cloud-consul.html

在这里插入图片描述

二.安装并运行Consule

1.官网安装说明
https://learn.hashicorp.com/consul/getting-started/install.html
在这里插入图片描述
2.下载完成解压之后只有一个consul.exe文件,硬盘路径下双击运行,查看版本信息
3.使用开发模式启动
consul agent -dev

在这里插入图片描述

4.测试
http://localhost:8500
在这里插入图片描述

三.代码编写
1.生产者

(1) 建module

(2) 改pom

<!-- 引入consul依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

(3) 写yml

server:
  port: 8006

spring:
  application:
    name: consul-provider-payment
  cloud: #cloud相关配置
    consul: #consul相关配置
      host: localhost #主机
      port: 8500 #端口号
      discovery:
        service-name: ${spring.application.name} #服务名

(4) 主启动
@EnableDiscoveryClient //服务注册与发现的注解

@SpringBootApplication
//服务注册与发现的注解
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8006.class,args);
    }
}
2.消费者

(1) 建module

(2) 改pom
同生产者

<!-- 引入consul依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

(3) 写yml
同生产者

server:
  port: 80

spring:
  application:
    name: consul-consumer-order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

(4) 主启动
同生产者

(5) 业务类
调用方式和zookeeper,eureka一模一样,没啥好说的.
5.1 向spring容器中注入RestTemplate对象

@Configuration
public class ApplicationContextConfig {

    /**
     * 注入一个rest风格调用主体类
     * @return
     */
    @Bean
    //负载均衡策略,使用集群策略,如果调用的服务,有多个服务提供者,则这个注解不能少,少了就会报错(因为计算机不知道调用哪个具体的服务实例)
    //这是ribbon的负责均衡注解,因为eureka已经集成了ribbon,所以就可以直接用此注解
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

5.2 业务代码发起远程调用

@RestController
public class OrderConsulController {

    @Autowired
    private RestTemplate restTemplate;
    //调用的微服务地址
    private static final String SERVICE_NAME = "http://cloud-provider-payment";

    @GetMapping("/payment/consul")
    public String payment(){
        String res = restTemplate.getForObject(SERVICE_NAME + "/payment/consul", String.class);
        return res;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值