
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
yml 配置文件,没有yml后缀的,直接添加一个文件即可
在application中加入注解@EnableEurekaServer,申明此处为服务注册中心。
package com.bcd.cloud.pf.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* EurekaApplication class
*
* @EnableEurekaServer was created by myself
*
* @author myself
* @date 2019/12/05
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
Start this project,and view in the web explorer.http://localhost:8761/
EnableEurekaClient
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8763
spring:
application:
name: productor
productor was set eureka client,it will discovery by 8761,but its port is 8763.
package com.bcd.cloud.pf.productor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* ProductorApplication class
*
* @EnableEurekaClient was created by myself
*
* @author myself
* @date 2019/12/05
*/
@SpringBootApplication
@EnableEurekaClient
public class ProductorApplication {
public static void main(String[] args) {
SpringApplication.run(ProductorApplication.class, args);
}
}
package com.bcd.cloud.pf.productor.rest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Demo class
*
* @author keriezhang
* @date 2016/10/31
*/
@RestController
public class AppController {
@Value("${server.port}")
String port;
@RequestMapping("/hi")
public String home(@RequestParam String name)
{
return "hi " + name + ",i am from port:" + port;
}
}


<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--断路器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
this is its pom.xml ,add some dependency.
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8764
spring:
application:
name: ribbon
This project‘s port is 8764.
package com.bcd.cloud.pf.ribbon.service;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;
// 断路器配置,当无法调用如下方法时,就会调用自定的hiError方法。
@HystrixCommand(fallbackMethod = "hiError")
public String hiService(String name)
{
ResponseEntity<Object> forEntity=restTemplate.getForEntity("http://PRODUCTOR/hi?name=" + name, Object.class);
Object forObject=restTemplate.getForObject("http://PRODUCTOR/hi?name=" + name, Object.class);
return restTemplate.getForObject("http://PRODUCTOR/hi?name=" + name, String.class);
}
public String hiError(String name) {
return "hi,"+name+",This has error in that page.";
}
}
hiService invoke the 8763 method hi,you could see this url:
"http://PRODUCTOR/hi?name="
run this application you will see this view:


The reason is that :
package com.bcd.cloud.pf.ribbon;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
/**
* RibbonApplication class
*
* @EnableEurekaClient was created by myself
* @EnableHystrix was created by myself ,断路由
*
* @author myself
* @date 2019/12/05
*/
@SpringBootApplication
//@EnableEurekaClient
@EnableDiscoveryClient
@EnableHystrix
public class RibbonApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonApplication.class, args);
}
/**
* 加入restTemplate以消费相关的服务。
* */
@Bean
@LoadBalanced
RestTemplate restTemplate()
{
return new RestTemplate();
}
}
原文:https://www.cnblogs.com/hoge66/p/11986894.html