# SpringCloud自定义服务发现 **Repository Path**: consolelog/codeforfun-discovery ## Basic Information - **Project Name**: SpringCloud自定义服务发现 - **Description**: 微服务体系中基于数据库的服务发现,可以灵活的拓展为自己需要的数据存储方式 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://consolelog.gitee.io/codeforfun-discovery/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-10 - **Last Updated**: 2022-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 快速开始 [文档地址](https://consolelog.gitee.io/codeforfun-discovery/) ## 导入初始化表结构 执行 client-implement/client-mysql/sql/schema.sql 数据库脚本导入初始化表结构。 ## 加入Maven依赖 [![Maven central](https://maven-badges.herokuapp.com/maven-central/cn.codeforfun/discovery-client-mysql/badge.svg)](https://maven-badges.herokuapp.com/maven-central/cn.codeforfun/discovery-client-mysql) 分别在consumer和producer服务中加入依赖 ```xml cn.codeforfun discovery-client-mysql {version} ``` ## 编写配置文件 ### consumer配置 application.yml ```yaml server: port: 50021 spring: application: name: client-consumer datasource: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/codeforfun-discovery ``` ### producer配置 application.yml ```yaml server: port: 50011 spring: application: name: client-producer datasource: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/codeforfun-discovery ``` ## 编写服务调用代码 ### consumer允许FeignClient: ``` @EnableFeignClients(basePackages = "com.example.feign") ``` ### consumer FeignClient: com.example.feign.TestClient.java ```java @FeignClient("client-producer") public interface TestClient { @GetMapping("/test1") String test1(); } ``` ### consumer接口 com.example.test.TestController.java ```java @RestController public class TestController { @Resource TestClient testClient; @GetMapping("/test") public String test() { return testClient.test1(); } } ``` ### producer接口 TestController.java ```java @RestController public class TestController { @GetMapping("/test1") public String test1() { return "producer client test1"; } } ``` ## 启动服务 分别启动producer和consumer服务,等待程序启动。 访问 http://localhost:50011/test1 后显示 *producer client test1* 则表示成功。 访问 http://localhost:50021/test 后同样显示 *producer client test1* 则表示成功。 ## 示例代码 示例代码在 example 目录下,example-client-producer为被调用方示例代码,example-client-consumer为调用方示例代码。 # 目前支持的数据存储 - MySQL - ElasticSearch # 配置项 key | 说明 | 默认值 --- | --- | --- discovery.service.service-active-interval | 服务激活间隔,单位:秒。 每隔多长时间激活一次自身服务 | 10 discovery.service.refresh-service-list-interval | 刷新服务列表间隔,单位:秒。 每隔多长时间刷新一次服务列表 | 20 discovery.service.service-active-timeout | 服务激活超时时间,单位:秒。 超过这个时间后该服务就会被认为是有故障的,之后就不会调用这个服务 | 60 discovery.service.name | 服务名,如果没设置的话会取(spring.application.name)的值,如果都没有则报错 | discovery.service.port | 服务端口,如果没设置的话会取(server.port)的值,如果还是没有则默认8080 | 8080 discovery.service.host | 服务地址,如果没设置会取本地ip | 本地ip ## MySQL配置项 由于MySQL是使用 *mysql-connector-java* 和 *spring-boot-starter-jdbc* 实现的,所以配置项也是直接继承这两个。没用过的话,正常配置数据源就行了。 ## ElasticSearch配置项 由于ElasticSearch是使用 *spring-boot-starter-data-elasticsearch* 实现的,所以配置项也是直接继承下来的。 # 源码地址 [GitEE仓库](https://gitee.com/consolelog/codeforfun-discovery)、 [Github仓库](https://github.com/qq253498229/codeforfun-discovery)。 以GitEE为主.