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 @ 2022-08-02 11:17  Rzk  阅读(122)  评论(0)    收藏  举报