消费

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sam</groupId>
<artifactId>hello-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent> <properties>
<javaVersion>1.8</javaVersion>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies> </dependencyManagement> <dependencies>
<!-- 引入eureka 客户端依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- 引入ribbon 依赖 ,用来实现负载均衡,我们这里只是使用,先不作其他介绍-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.6.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入hystrix 依赖 ,用来实现服务容错保护-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
</dependencies>
</project>

启动类:

/*@SpringBootApplication +
@EnableDiscoveryClient+
@EnableCircuitBreaker
= @SpringCloudApplication */ @SpringCloudApplication
public class CustomerApplication {
//@Bean 应用在方法上,用来将方法返回值设为为bean
@Bean
@LoadBalanced //@LoadBalanced实现负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
} public static void main(String[] args) {
SpringApplication.run(CustomerApplication.class, args);
} }

service:

@Service
public class ConsumerService { @Autowired
RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "errorMsg")
public String consumer() { return restTemplate.getForObject("http://hello-service/hello", String.class);
} /**
* 由 @HystrixCommand(fallbackMethod = "errorMsg")
* 可知 在起多个服务时,如果其中一个服务宕机,则会调用 errorMsg()
* 方法; 相比在不加@EnableCircuitBreaker断路器,的包500d的错
*/ public String errorMsg() {
return "error!!!";
}
}

controller:

@RestController
public class ConsumerController { //这里注入的restTemplate就是在com.sam.ConsumerApp中通过@Bean配置的实例
/*@Autowired
RestTemplate restTemplate;*/ @Autowired
ConsumerService consumerService; @RequestMapping("/consumer")
public String helloConsumer() {
//调用hello-service服务,注意这里用的是服务名,而不是具体的ip+port
// return restTemplate.getForObject("http://hello-service/hello", String.class);
return consumerService.consumer();
}
}

最新文章

  1. 2016-11-02: boost::enable_shared_from_this
  2. 总结CSS3新特性(媒体查询篇)
  3. Java中的原始类型(Primitive Types)与引用类型(Reference Values)
  4. 【恒天云技术分享系列10】OpenStack块存储技术
  5. NetAddr
  6. thinkphp 独立分组配置
  7. 获取汉字拼音 Java
  8. Java中异常的基本应用(一)
  9. C++ ASCII 码的一些问题
  10. Swift中类的初始化器与继承
  11. IOS的UITextField,UIButton,UIWebView它描述的一些属性和IOS提示图像资源
  12. iOS开发之数据存储之Core Data
  13. [Scikit-learn] 2.1 Clustering - Variational Bayesian Gaussian Mixture
  14. AM335X的USB otg网卡(RNDIS /Ethernet Gadget)调试
  15. 【Python】 命名空间与LEGB规则
  16. javascript 事件冒泡和事件代理
  17. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
  18. Ubuntu配置ORB-SLAM2过程中的问题
  19. IEnumerable,ICollection,IList接口问题
  20. 统计分析与R软件-chapter2-4

热门文章

  1. 洛谷P3905 道路重建
  2. E11000 duplicate key error index
  3. CVE-2018-4407 漏洞复现POC
  4. [HDU4135]CO Prime(容斥)
  5. typedef int a[10];怎么解释?
  6. GoLang fsnotify 实现目录中日志文件大小监控
  7. Jquery第一次考核
  8. JS-对象中写方法
  9. 【iOS】Updating local specs repositories
  10. MySQL中一些关于索引的知识点