Loading

consul安装部署

官方文档

拉取consul镜像

docker pull consul

运行容器 需开启8500和8600端口

docker run
-d
-p 8500:8500
-p 8600:8600/udp
--name=badger
consul agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0

访问 ip:8500

springboot模块 提供者

启动类


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ProviderConsl8006 {

    public static void main(String[] args) {
        SpringApplication.run(ProviderConsl8006.class,args);
    }
}

yml配置

server:
  port: 8006

spring:
  application:
    name: consul-providder-payment
  cloud:
    consul:
      host: ip
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        heartbeat:
          enabled: true

controller


import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.UUID;


@ResponseBody
@RestController
@Slf4j
public class PaymentConsulController {


    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/zk")
    public String paymentzk(){
        return "springcloud with zookeeper :" + serverPort + "\t" + UUID.randomUUID().toString();
    }


}


springboot模块 消费者

启动类


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {

    public static void main(String[] args) {
        SpringApplication.run(OrderConsulMain80.class,args);
    }
}

yml配置

server:
  port: 80

spring:
  application:
    name: consul-consumer-order
  cloud:
    consul:
      host: ip
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        heartbeat:
          enabled: true

config

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

controller


import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
@Slf4j
public class OrderConsulController {

    public static final String INVOKE_URL = "http://consul-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping(value = "/consumer/payment/consul")
    public String paymentInfo(){
        String template = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
        return template;
    }
}


posted @   Rzk  阅读(108)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示