小编nes*_*ohc的帖子

与netflix Eureka一起使用spring-cloud时,如何让Discovery Client工作?

我正在尝试使用带有netflix插件(如Hystrix,Eureka和Ribbon)的spring cloud创建一个基本项目,以了解其工作原理.我正在尝试制作的项目是一个简单的消息服务器,它将保留消息.一个消息客户端只询问服务器的消息,我想使用自动发现客户端或RestTemplate发现.但我无法上班.

我有以下结构:

  • 消息客户端(尤里卡客户端)
  • 消息服务器(eureka客户端)
  • 配置服务(配置服务器)
  • 发现服务(尤里卡服务器)

我目前所做的是启动配置服务,并在通过以下结构连接时将application.yml详细信息公开给所有这些"apps/clients":

  • 配置服务的\ src \主\资源\设置\ appname.yml
  • app\src\main\resources\bootstrap.yml(包含云配置的appname和url)

这工作正常,我的应用程序启动它们从配置服务器接收的端口,以及它们都连接到我的eureka服务器,并且所有这些都在那里可见.除了Hystrix故障转移也起作用,并不是它与此相关,但它告诉我它不可能完全错误.

但是我的困惑是......在我的客户端模块中的服务类(@Service annotated)中使用@Autowired注释时,我得到了一个discoveryClient对象,但是我无法找到使用该对象的任何其他服务.

消息客户端 - 启动类:

@EnableAutoConfiguration
@EnableHystrix
@EnableEurekaClient
@ComponentScan("cloud.rest.resources, spring.cloud.client")
public class ClientBoot {
    public static void main(String[] args) {
        SpringApplication.run(ClientBoot.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

消息客户端 - REST资源:

@RestController
public class MessageResource {
    @Autowired
    private MessageClient messageClient;
    @RequestMapping(value = "/message/{client}", method = RequestMethod.GET)
    public Message getMessage(@PathVariable String client) {
        return messageClient.getMessage(client);
    }
}
Run Code Online (Sandbox Code Playgroud)

消息客户端 - MessageClient:

@Service
public class RestMessageClient implements MessageClient {
    @Autowired
    private DiscoveryClient discoveryClient; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-cloud netflix-eureka

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

netflix-eureka ×1

spring ×1

spring-cloud ×1