一.概述
在实际的业务开发中,当我们的产品有了稳定的用户量,我们就会开始去做数据统计,针对用户的各种行为进行统计,拿到了这些数据,我们就可以针对性的开发新的功能,从而增加产品的盈利,为老板的保时捷添砖加瓦,为我们自己的项目奖金也提升一个档次.
二.需求和实现逻辑
这章节讲解统计用户的访问量,并把数据做持久化,我们采用在gateway网关出集成kafka,gateway收到一个请求,就往kafka中推送数据,server-user服务作为消息中间件的消费者接受数据并且持久化到elasticSearch这样的文档性数据库.
三.模仿server-user服务,新建微服务server-data
1.创建maven工程.
2.编写启动类ServerDataApplication.
package com.ccm.server.data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Description server-data服务启动类
* @Author ccm
* @CreateTime 2020/08/11 14:04
*/
@EnableDiscoveryClient //注册中心客户端
@ComponentScan(basePackages = "com.ccm")
@EnableSwagger2
@SpringBootApplication //声明为一个启动类
public class ServerDataApplication {
public static void main(String[] args) {
SpringApplication.run(ServerDataApplication.class,args);
}
}
3.编写bootstrap.yml配置文件.
server:
port: 2000 #服务端口
spring:
application:
name: server-data #服务名称
cloud:
nacos:
discovery:
server-addr: 47.96.131.185:8849
config:
server-addr: 47.96.131.185:8849 #nacos config配置中心ip和端口
file-extension: yaml #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置
enabled: true #开启或关闭配置中心
4.swagger中加入请求头参数信息.
package com.ccm.server.data.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.ArrayList;
import java.util.List;
/**
* @Description swagger配置
* @Author ccm
* @CreateTime 2020/7/8 17:38
*/
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
List<Parameter> pars = new ArrayList<Parameter>();
ParameterBuilder ticketPar = new ParameterBuilder();
ticketPar.name("ccm-token").description("必要参数(白名单接口无需传递)")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ccm.server.data.controller")) //swagger接口扫描包
.paths(PathSelectors.any()).build().globalOperationParameters(pars);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().version("1.0.0")
.title("欢迎")
.description("光临")
.termsOfServiceUrl("www.baidu.com")
.build();
}
}
4.server-data整合kafka.
(1).ccm-mall.pom顶级父工程中加入版本管理.
<!--kafka-->