微服务SpringCloud无法进行服务消费
最近用SpringCloud做微服务,一直无法成功进行服务消费。
我使用的服务消费者是Feign,声明式调用服务提供者。
排查过程
1.检查服务提供者:
(1)对提供的方法进行测试,确保提供的服务没有问题。
(2)是否在控制层上方添加了@Controller。
(3)方法的method是否正确。是GET还是POST。
2.仔细检查服务消费者:
(1)服务名value是否正确。服务名不一定是项目名,要检查服务提供者的application配置文件,对应的spring.application.name属性,也可以直接打开注册中心查看服务名。
(2)是否存在上下文。要检查服务提供者的application配置文件,是否有 context-path 属性。如果存在上下文属性,要加到方法参数value的前面 。
(3)方法的method是否正确。是GET还是POST。
(4)方法的url是否正确。对应服务提供者的url。
3.检查断路由Hystrix:
(1)在类的上方是否加了@Component
4.检查是在哪个环境下操作:
如果本地环境的程序没有关闭,就对部署在开发环境中的服务发起消费请求,可能会失败。
示例如下:
服务提供者,服务名为invoice,如下:
@Controller
public class InvoiceMsgController extends BaseController{
private static final Logger logger=LoggerFactory.getLogger(InvoiceMsgController.class);
@Autowired
private SendMsgService sendMsgService;
/**
* 服务提供者的方法
*/
@RequestMapping(value = "/sentMsg", method = RequestMethod.POST )
public void sentMsgToWeChat(HttpServletRequest request) throws Exception {
// 从请求中获取sendJson等其他逻辑忽略
sendMsgService.SendWechatMessage(sendJson);
logger.info("==============>成功推送个人号消息。");
}
}
服务提供者的yml配置文件:
server:
port: 10010
context-path: /dev
spring:
application:
name: invoice
服务消费者Feign,调用的服务提供者名称为invoice,如下:
@FeignClient(value="invoice",fallback=InvoiceMsgHystrix.class)
public interface InvoiceMsgService {
/**
* 调用服务提供者中的方法。
* 注意:此处的/dev 是invoice服务的上下文,相关的properties配置为: server.context-path=/dev。如果服务提供者有上下文,就要加在Feign的value里面。没有则不加。
*/
@RequestMapping(value = "/dev/sentMsg", method = RequestMethod.POST)
JSONObject sentMsgToWeChat(JSONObject invoiceJson) ;
}
服务熔断如下:
/**
* 断路由
*
*/
@Component
public class InvoiceMsgHystrix implements InvoiceMsgService{
private JSONObject createObject(){
JSONObject object=new JSONObject();
object.put("errcode", "0001");
object.put("description", "发送消息失败");
return object;
}
@Override
public JSONObject sentMsgToWeChat(JSONObject request) {
// TODO Auto-generated method stub
return createObject();
}
}
微服务SpringCloud无法进行服务消费的更多相关文章
- 「 从0到1学习微服务SpringCloud 」05服务消费者Fegin
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」10 服务网关Zuul
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...
- 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」07 RabbitMq的基本使用
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- SpringCloud Alibaba Nacos 服务注册
业务服务接入Nacos服务治理中心 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/ 创建bom工程用于管理依赖(下方附加源码地址) 准备工作完成后开始接 ...
- springcloud之自定义简易消费服务组件
本次和大家分享的是怎么来消费服务,上篇文章讲了使用Feign来消费,本篇来使用rest+ribbon消费服务,并且通过轮询方式来自定义了个简易消费组件,本文分享的宗旨是:自定义消费服务的思路:思路如果 ...
- 一个天气的微服务springcloud
1.开发环境 jdk8 和 gradle 4. ---------------搭建一个天气预报系统 1.bootstrap就是一堆样式文件,首先有html标签,然后加上各种样式以后就变得好看了2.j ...
随机推荐
- XML一
HTML(HyperText Markup Language),即超文本标记语言,是用于描述网页文档的一种描述标记语言. 而XML(E ...
- 关于windows下的文件结束符
在<c++ primer>中有说,在windows中文件结束符为:ctrl+z,在Linux中为:ctrl+D. 但是在while(cin>>s)的语句运行中,需要两次的^Z, ...
- PythonStudy——Python字典底层实现原理 The underlying implementation principle of Python dictionary
在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在 ...
- golang-grpc-Unimplemented-desc
golang 调用grpc 服务方法时候提示:"rpc error: code = Unimplemented desc ="的错误, 这是由于pb中的package name 被 ...
- Keepalived+LVS实现高可用负载均衡双主模式
LVS是一种集群(Cluster)技术:采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一 ...
- Mac 永久添加 环境变量方法
在 ~ 目录下 新建 .bash_profile 文件 在文件新增 export PATH="$PATH:/Users/zhangpengchao/tools/flutter/flutter ...
- C++ std::async vs async/await in C# - Stack Overflow
C++ std::async vs async/await in C# - Stack Overflow 我想知道新的c ++功能std::async是否与两个C#关键字async / await相当 ...
- 【转】Entity Framework 复杂类型
为了说明什么是复杂属性,先举一个例子. public class CompanyAddress { public int ID { get; set; } public string CompanyN ...
- python3学习笔记五(列表2)
参考http://www.runoob.com/python3/python3-list.html 嵌套列表 a = ['a','b','c']b = [1,2,3]x = [a, b]print(x ...
- FastCGI点滴
FastCGI是一种二进制协议,用于将交互式程序与Web服务器连接.它是早期通用网关接口(CGI)的变体.FastCGI的主要目标是减少与Web服务器和CGI程序之间的接口相关的开销,允许服务器每单位 ...