SpringCloud eureka 集成 ,测试发现消费者访问报400的问题

初步发现问题是版本兼容问题,之前使用springboot 2.1.6.RELEASE,SpringCloud使用的是Greenwich.SR2版本,一直存在此问题。

改进方法:

  1. 将springboot 1.5.4RELEASE,SpringCloud  Dalston.SR1版本,此问题已解决
  2. erueka service的配置

2.1,pom文件,添加

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <!--<version>2.1.6.RELEASE</version>-->
   
<version>1.5.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Dalston.SR1</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </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>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2.2application.yml配置文件

# 单机版配置开始

# 注册中心名称

spring:

  application:

    name: eurkaserver



# 端口号

server:

  port: 1001



#  服务主机名

eureka:

  instance:

    hostname: ip地址



  client:

    #是否向注册中心注册自己

    registerWithEureka: false

    #是否从注册中心查询服务

    fetchRegistry: false

    serviceUrl:

      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/



# 单机版配置结束

2.3,启动类

@EnableEurekaServer

@SpringBootApplication

public class EurekaServiceApplication {



    public static void main(String[] args) {

        SpringApplication.run(EurekaServiceApplication.class, args);

    }



}

3,erueka client 配置文件

3.1,pom文件

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <!--<version>2.1.6.RELEASE</version>-->

    <version>1.5.4.RELEASE</version>

    <relativePath/> <!-- lookup parent from repository -->

</parent>



<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <java.version>1.8</java.version>

    <spring-cloud.version>Dalston.SR1</spring-cloud.version>

</properties>



<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-test</artifactId>

        <scope>test</scope>

    </dependency>

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-eureka</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>



<build>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>

 

3.2 ,application.yml配置文件

 # 服务名

spring:

  application:

    name: eurekaclient

# 端口号

server:

  port: 2001

# 注册中心地址

eureka:

  client:

    serviceUrl:

      defaultZone: http://10.10.97.210:1001/eureka/

 

3.3,类配置

启动类

@EnableDiscoveryClient

@SpringBootApplication

public class EurekaClient1Application {



    public static void main(String[] args) {

        SpringApplication.run(EurekaClient1Application.class, args);

    }



}
 
@RestController

public class HiController {



    @Autowired

    private DiscoveryClient discoveryClient;



    @RequestMapping("hi")

    public String hi() {

        return "hello,这是服务1111111111111111";

    }



    @GetMapping("/dc")

    public String dc() {

        String services = "Services: " + discoveryClient.getServices()+"111111111111111111111";

        System.out.println(services);

        return services;

    }



}
4,erueka consumer 配置文件

4.1,pom文件

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.5.4.RELEASE</version>

    <relativePath/>

</parent>



<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <java.version>1.8</java.version>

</properties>



<dependencies>

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-consul-discovery</artifactId>

    </dependency>



    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>



    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-actuator</artifactId>

    </dependency>

</dependencies>



<dependencyManagement>

    <dependencies>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-dependencies</artifactId>

            <version>Dalston.SR1</version>

            <type>pom</type>

            <scope>import</scope>

        </dependency>

    </dependencies>

</dependencyManagement>



<build>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>

 

4.2,application.yml配置文件

# 服务名

spring:

  application:

    name: consulconsumer

# 端口号

server:

  port: 3001

# 服务访问地址

cloud:

  consul:

    host: localhost

      port: 3001

4.3,类配置

@EnableDiscoveryClient
@SpringBootApplication

public class Application {

  
@Bean
  
public RestTemplate restTemplate() {
     
return new RestTemplate();
   }

  
public static void main(String[] args) {
     
new SpringApplicationBuilder(Application.class).web(true).run(args);
   }

}

@RestController

public class DcController {

    @Autowired

    LoadBalancerClient loadBalancerClient;

    @Autowired

    RestTemplate restTemplate;

    @GetMapping("/consumer")

    public String dc() {

        ServiceInstance serviceInstance = loadBalancerClient.choose("eurekaclient");

        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";

        System.out.println(url);

        return restTemplate.getForObject(url, String.class);

    }



}

 

5,erueka consumer ribbon 配置文件

5.1,pom文件

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <!--<version>2.1.6.RELEASE</version>-->

    <version>1.5.4.RELEASE</version>

    <relativePath/> <!-- lookup parent from repository -->

</parent>



<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <java.version>1.8</java.version>

    <spring-cloud.version>Dalston.SR1</spring-cloud.version>

</properties>



<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-test</artifactId>

        <scope>test</scope>

    </dependency>

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-eureka</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-ribbon</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-actuator</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>



<build>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>

5.2,application.yml配置文件

#本机服务名

spring:

  application:

    name: eurekaconsumerribbon

#本机端口

server:

  port: 3001

#注册中心地址

eureka:

  client:

    serviceUrl:

      defaultZone: http://10.10.97.210:1001/eureka/

 

5.3,类配置

@EnableDiscoveryClient

@SpringBootApplication

public class ConsumerRibbonApplication {



    public static void main(String[] args) {

        SpringApplication.run(ConsumerRibbonApplication.class, args);

    }



    @Bean

    @LoadBalanced

    public RestTemplate restTemplate(){

        return new RestTemplate();

    }



}

 

@RestController

public class HiController {



    @Resource

    RestTemplate restTemplate;

    @Resource

    private DiscoveryClient discoveryClient;





    @RequestMapping("hi")

    public String hi(){



        String forObject = restTemplate.getForObject("http://eurekaclient/hi", String.class);

        return forObject;

    }



    @RequestMapping("/sayHello")

    public String sayHello(@RequestParam(value = "name", defaultValue = "Spring Cloud") String name) {

        ResponseEntity resultResponseEntity = restTemplate.getForEntity( "http://eurekaclient/hi" + name, null, String.class);

        if (resultResponseEntity != null && resultResponseEntity.getBody() != null) {

            return name + " says: " + resultResponseEntity.getBody().toString();

        }

        return "sayHello";

    }



    @RequestMapping("/service-instances/{applicationName}")

    public List<ServiceInstance> serviceInstancesByApplicationName(

        @PathVariable String applicationName) {

        return this.discoveryClient.getInstances(applicationName);

    }



}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值