Springcloud学习之整合Eureka(一)

前提准备:

搭建一个聚合工程(父子工程),这边就不在说明了,不会的点这边(用的demo也是这个地址下的):链接地址
demo下载地址
建议看看这个:Eureka 工作原理
目录结构如下:
Springcloud学习之整合Eureka(一)_第1张图片

一、修改父类pom文件

在父类的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>

二、修改子类cloud-provider-payment8001的pom.xml

		<!--引入 eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

三、添加公用子工程cloud-api-commons

cloud-api-commons工程用来存放其它工程的公用类,比如实体类等等(详细过程就不写了,毕竟这篇主要讲的是整合注册中心Eureka,你要是想写简单写个hello world也行)

四、添加生产者模块cloud-provider-payment8001

cloud-provider-payment8001主要写业务逻辑,这边我就写了个简单的插入查询,具体我怎么写就不贴出来了,你也可以自己写,写个hello world也行 demo在下面

五、添加消费者模块cloud-consumer-order80

cloud-consumer-order80主要是调用生产者模块的,我这边是通过RestTemplate发送HTTP请求的,没有用HttpClient,
1、建个配置类,将RestTemplate交给spring容器管理,后面要使用就可以通过注入的方式来使用了
Springcloud学习之整合Eureka(一)_第2张图片2、通过RestTemplate访问生产者模块
Springcloud学习之整合Eureka(一)_第3张图片3、可以看到这样消费者调生产者是成功的
Springcloud学习之整合Eureka(一)_第4张图片
数据库

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

六、创建Eureka模块cloud-eureka-server7001和cloud-eureka-server7002

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);
    }
}

七、修改生产者模块cloud-provider-payment8001和消费者模块cloud-consumer-order80

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
Springcloud学习之整合Eureka(一)_第5张图片

完整demo下载地址:https://download.csdn.net/download/weixin_43085797/12488827

你可能感兴趣的:(springcloud)