我正在尝试使用带有netflix插件(如Hystrix,Eureka和Ribbon)的spring cloud创建一个基本项目,以了解其工作原理.我正在尝试制作的项目是一个简单的消息服务器,它将保留消息.一个消息客户端只询问服务器的消息,我想使用自动发现客户端或RestTemplate发现.但我无法上班.
我有以下结构:
我目前所做的是启动配置服务,并在通过以下结构连接时将application.yml详细信息公开给所有这些"apps/clients":
这工作正常,我的应用程序启动它们从配置服务器接收的端口,以及它们都连接到我的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)