最近用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无法进行服务消费的更多相关文章

  1. 「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  2. 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  3. 「 从0到1学习微服务SpringCloud 」10 服务网关Zuul

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...

  4. 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  5. 「 从0到1学习微服务SpringCloud 」07 RabbitMq的基本使用

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  6. 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  7. SpringCloud Alibaba Nacos 服务注册

    业务服务接入Nacos服务治理中心 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/ 创建bom工程用于管理依赖(下方附加源码地址) 准备工作完成后开始接 ...

  8. springcloud之自定义简易消费服务组件

    本次和大家分享的是怎么来消费服务,上篇文章讲了使用Feign来消费,本篇来使用rest+ribbon消费服务,并且通过轮询方式来自定义了个简易消费组件,本文分享的宗旨是:自定义消费服务的思路:思路如果 ...

  9. 一个天气的微服务springcloud

    1.开发环境 jdk8  和 gradle 4. ---------------搭建一个天气预报系统 1.bootstrap就是一堆样式文件,首先有html标签,然后加上各种样式以后就变得好看了2.j ...

随机推荐

  1. svn安装时遇到问题总结

    问题1: 一番折腾终于解决了,现将解决方法总结一下: 1.点击Window键+R键,如下图: 2.输入services.msc命令,然后点击“确定”,得到下图: 3.找到并选中“Windows Man ...

  2. golang-generate-1pixel-image

    package main import ( "bytes" "encoding/base64" "flag" "html/temp ...

  3. Python生成器(generator)和迭代器(Iterator)

    列表生成式 a = [i+1 for i in range(10)] print(a) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 这就是列表生成式 生成器(generator) ...

  4. 1.2.4 Excel快速建立n个文件夹

    1.准备员工信息表,选中名字 2.[设置单元格格式]>[数字]>[自定义]>右侧的[类型]>输入”md ”@>单击[确定] 3.确定后在姓名前会出现md,新建文本文档,将 ...

  5. FP-Growth算法

    FP-Growth算法的目标是发现模式,其特点就是高效,因为可以通过设置发生频次直接过滤掉一些低频次的元素:而且秉承了和Apriori的思想,对于低频次的元素,其父级和子级的组合都是低频的. FP-G ...

  6. [UE4]VR成像原理

    一.双眼成像原理 二.3D电影成像原理 模拟人眼.用2个摄像机拍摄,模拟人的左眼和右眼 播放的时候2个投影仪分别同时播放左右摄像机拍摄到内容,观众带上3D眼镜,左眼只能看到左摄像机的内容(过滤右摄像机 ...

  7. Activiti图表bpmn对应的xml文件

    当我们绘制了一个bpmn图表,实质是创建了一个xml文件, 右键bpmn文件open  with   xml edit <?xml version="1.0" encodin ...

  8. Chapter 5 数组:为什么很多编程语言种数组都是从0开始编号?

    如何实现随机访问? 线性表:数组,队列,链表,栈 非线性表:树,图 总结:数组用一块连续的内存空间,来存储相同类型的一组数据,最大的特点就是支持随机访问,但插入,删除操作也因此变得比较低效,平均情况时 ...

  9. 八(第一篇)、主体结构元素——article元素、section元素

    article元素 article元素代表文档.页面或应用程序中独立的.完整的.可以独自被外部引用的内容. 他可以是一篇博客或者报刊中的文章,一篇轮胎帖子.一段用户评论或独立的插件,或其他任何独立的插 ...

  10. bzoj2141排队

    /* 动态求逆序对,可以树套树来写, 将交换操作理解成插入和删除比较好理解, 里层是个区间求和的线段树就好了 或者叫 带修主席树? */ #include<cstdio> #include ...