搭建一个聚合工程(父子工程),这边就不在说明了,不会的点这边(用的demo也是这个地址下的):链接地址
demo下载地址
建议看看这个:Eureka 工作原理
目录结构如下:
在父类的pom中引入依赖,我这边用的springcloud的版本是Hoxton.SR1,根据官网spring官网推荐,Hoxton.SR1对应的springboot版本最好是2.2.2.RELEASE
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--引入 eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
cloud-api-commons工程用来存放其它工程的公用类,比如实体类等等(详细过程就不写了,毕竟这篇主要讲的是整合注册中心Eureka,你要是想写简单写个hello world也行)
cloud-provider-payment8001主要写业务逻辑,这边我就写了个简单的插入查询,具体我怎么写就不贴出来了,你也可以自己写,写个hello world也行 demo在下面。
cloud-consumer-order80主要是调用生产者模块的,我这边是通过RestTemplate发送HTTP请求的,没有用HttpClient,
1、建个配置类,将RestTemplate交给spring容器管理,后面要使用就可以通过注入的方式来使用了
2、通过RestTemplate访问生产者模块
3、可以看到这样消费者调生产者是成功的
数据库:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for payment
-- ----------------------------
DROP TABLE IF EXISTS `payment`;
CREATE TABLE `payment` (
`id` bigint(20) NOT NULL,
`serial` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of payment
-- ----------------------------
INSERT INTO `payment` VALUES (223, '哈哈哈');
INSERT INTO `payment` VALUES (556, '你好啊');
INSERT INTO `payment` VALUES (557, '你好啊');
INSERT INTO `payment` VALUES (888, '卡卡');
SET FOREIGN_KEY_CHECKS = 1;
demo下载地址:
链接:https://pan.baidu.com/s/12gqGfDj1H6gvKpFAxo3Y8A
提取码:ndti
1、application.yml配置文件都一样,只不过是端口号和Eureka服务端名字不一样而已
server:
port: 7001
##########################################
#eureka配置
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名字
client:
register-with-eureka: false #表识不向注册中心注册自己
fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
service-url:
#集群配置,跟7002互相注册
defaultZone: http://eureka7002.com:7002/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
2、启动类要加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class CloudEurekaServer7002Application {
public static void main(String[] args) {
SpringApplication.run(CloudEurekaServer7002Application.class,args);
}
}
1、生产者模块cloud-provider-payment8001和消费者模块cloud-consumer-order80要添加Eureka依赖
<!--引入 eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、更改application.yml文件,添加Eureka配置
#eureka配置
eureka:
client:
register-with-eureka: true #是否向注册中心注册
fetch-registry: true #是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
3、生产者8001模块启动类添加@EnableEurekaClient@EnableDiscoveryClient注解
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@MapperScan(basePackages = {"cn.wwfww.springcloud.mapper"})//不加这句mapper依赖注入不进来
public class CloudProviderPayment8001Application {
public static void main(String[] args) {
SpringApplication.run(CloudProviderPayment8001Application.class,args);
}
}
4、消费者模块80,使用@LoadBalanced注解赋予RestTemplate负载均衡能力
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
启动:要先启动7001,7002才能启动8001,8002,80,不然会报错,报连接不上7001和7002
完整demo下载地址:https://download.csdn.net/download/weixin_43085797/12488827