您的位置:首页 > 编程语言 > Java开发

Spring cloud - Feign / Eureka load balance does not and connetion refused

2017-06-14 22:45 495 查看
今天集成项目接口对接,别人说,为什么你的spring cloud 提供的接口没办法用feign的方式调用,我当时觉得好奇怪,因为cloud项目本身自己去调试的时候我通常是不开eureka的,所以都是基于serveice本身去调用,我们通常的项目结构包如下:

project:

  -xxx-api  

  -xxx-dao

  -xxx-service

api 是对外提供feign 接口调用的,但是pom file 要引用feign

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-feign</artifactId>

        </dependency>

dao 就不说了,我们使用mybatis,里边放的都是mapper文件和bean 文件

service,是主要是url mapping,就是spring 中的controller,用于处理rest 之间的调用

好了,前戏就到这里, 开始说下我们遇到的问题。

先看看我的eureka,启动界面:



第一个问题: connection refused.

 



没办法,把pom file 梳理了一遍,把缺feign的依赖包加进去了,然后竟然OK了,不过转身就开始报下个错误,真是尼玛脱裤子不认账啊。。。

第二个:

Load balancer does not have available server 。。。。。。。。。。。。。

真尼玛奇怪了,eureka注册有了, feign也可以调用了, 竟然说找不到服务,然后开始各种百度,各种查询类似的问题,但是都没结果。

这心情真是日了狗了。

又检查代码,又开始梳理pom 文件,然后application.preoperties 文件,又和别的已经可以运行的项目文件进行比较,没啥啊。。。

然后抽根烟发呆,也开始想为什么 为什么。

突然想起早上,查另外一个问题的时候有人说,spring boot对文件命名有自己的查询规则。 我想了想,是不是命名有问题,因为java的习惯是文件名都大写,所以我的service名字也都是这种格式第一个单词之间都是大写。请大家注意下面的写法:

错误写法:

# spring

spring.application.name=noticeCenter-service

正确写法:

# spring

spring.application.name=noticecenter-service

抱着尝试的心态改完配置文件重新clean install一下,重新发布,cnmd,竟然好了,好了, 真心没看错, 真的可以调用了。

可以再另外一个service调用了。

这个算不算坑? 算不算坑?

通过这个方式在另外一个系统可以调用了,调用的url 是这样的http://noticecenter-service/api/noticeCenter/noticeCount

大写是绝对不可以的。

好了,本次解决时间大概用了3个半小时。

大家都注意下,别乱大小写。
http://noticeCenter-service/api/noticeCenter/noticeCount
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐