Java 春云:假罐头';我不能和领事一起工作

Java 春云:假罐头';我不能和领事一起工作,java,consul,spring-cloud-feign,Java,Consul,Spring Cloud Feign,我正试图与Concur和Feign建立一个SpringCloud项目,但没有成功 它总是指出“com.netflix.client.ClientException:Load balancer没有可用于client:facility阅读器的服务器”。 这是消费者的主要类别 @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class Main { public static void main(

我正试图与Concur和Feign建立一个SpringCloud项目,但没有成功

它总是指出“com.netflix.client.ClientException:Load balancer没有可用于client:facility阅读器的服务器”。 这是消费者的主要类别

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Main {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Main.class, args);
    }
}
这是我的消费者界面使用伪装

@FeignClient("facility-readers")
public interface FacilitiesService {
@RequestMapping(value="/facilities/info", method = RequestMethod.GET)
public String findByIdFeign();
}
这是我的消费者服务

@RestController
@RequestMapping("/facilities")
public class FacilitiesServiceImpl {

  @Autowired
  private FacilitiesService facilitiesService;

  @RequestMapping(value = "/info", method = RequestMethod.GET)
  public String getInfo() {
      String reult=facilitiesService.findByIdFeign();

      System.out.println("服务消费者");
      return reult;
  }
}
@RestController
@RequestMapping("/facilities")
public class FacilitiesQueryServiceImpl {

@RequestMapping(value = "/info", method = RequestMethod.GET)
public String getInfo() {
    System.out.println("服务提供方");
    return "调用成功";
}
}
这是消费者文件application.yml

server:
  display-name: 设备写服务
  port: 8900
spring:
  application:
    name: facility-writer
  cloud:
    consul:
      host: 192.168.8.164
      port: 8500
      discovery:
        register: true
        enabled: true
        instance-id: facility-${random.value}
        service-name: 设备写服务
      enabled: true
server:
  display-name: 设施业务读服务
  port: 8901
spring:
  application:
    name: facility-reader
  cloud:
    consul:
      host: 192.168.8.164
      port: 8500
      discovery:
        register: true
        enabled: true
        instance-id: facility-reader
        service-name: 设施业务读服务
      enabled: true
这是我的课程

@SpringBootApplication
@EnableDiscoveryClient
@ImportResource("spring-context.xml")
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}
这是我的服务提供商

@RestController
@RequestMapping("/facilities")
public class FacilitiesServiceImpl {

  @Autowired
  private FacilitiesService facilitiesService;

  @RequestMapping(value = "/info", method = RequestMethod.GET)
  public String getInfo() {
      String reult=facilitiesService.findByIdFeign();

      System.out.println("服务消费者");
      return reult;
  }
}
@RestController
@RequestMapping("/facilities")
public class FacilitiesQueryServiceImpl {

@RequestMapping(value = "/info", method = RequestMethod.GET)
public String getInfo() {
    System.out.println("服务提供方");
    return "调用成功";
}
}
下面是提供程序文件application.yml

server:
  display-name: 设备写服务
  port: 8900
spring:
  application:
    name: facility-writer
  cloud:
    consul:
      host: 192.168.8.164
      port: 8500
      discovery:
        register: true
        enabled: true
        instance-id: facility-${random.value}
        service-name: 设备写服务
      enabled: true
server:
  display-name: 设施业务读服务
  port: 8901
spring:
  application:
    name: facility-reader
  cloud:
    consul:
      host: 192.168.8.164
      port: 8500
      discovery:
        register: true
        enabled: true
        instance-id: facility-reader
        service-name: 设施业务读服务
      enabled: true
下面是pom.xml内容

<dependencies>
<!-- Spring cloud -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>1.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-consul-discovery</artifactId>
    <version>1.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependency>

我的项目出了什么问题?

我也遇到了同样的问题,并找到了发生这种情况的愚蠢原因:我认为输入外文就足够了。但实际上我缺少了这种依赖性:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
 </dependency>

org.springframework.cloud
spring cloud starter领事发现
(别忘了名字里的启动器)


当我使用它时,我看到在我的应用程序启动10秒后,日志中出现了一些与领事相关的活动,甚至什么都没做,这是一个好迹象。然后我确认它按预期工作。

您在yrou客户端中使用过DiscoveryClient吗?我们正在使用
spring.cloud.concur.discovery.instance zone
将所有服务注册到concur中,但不确定如何从客户端进行筛选,以确保可发现的服务仅限于开发人员、qa人员或产品人员;你明白了吗?