kafka springboot

kafka yml

复制代码
server:
  port: 8033
spring:
  datasource:
    master:
      jdbc-url: jdbc:mysql://58.20.139.19:3306/baseline_yueyang?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
      username: root
      #password: HaiNei1205~!
      password: ZHEtang403~!
      driver-class-name: com.mysql.cj.jdbc.Driver
  rabbitmq:
    host: 58.20.139.19
    port: 5672
    username: guest
    password: guest
    listener:
      direct:
        retry:
          max-attempts: 5
          enabled: true
  kafka:
    consumer:
      enable-auto-commit: true
      group-id: hn1234567
      #latest, earliest, none
      auto-offset-reset: earliest
      bootstrap-servers: 58.20.139.19:9092
log:
  retention:
    hours: 48
logging:
  config: classpath:logback-spring.xml
  path: D:/logs/
View Code
复制代码

pom

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hainei</groupId>
    <artifactId>samp-etl-water</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>samp-etl-backend</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>alisdk</artifactId>
        <version>1.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>

    <!-- 打包war [3] 添加依赖 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 打包war [2] 移除自带内置tomcat -->
        <!--            <exclusions>-->
        <!--                <exclusion>-->
        <!--                    <artifactId>spring-boot-starter-tomcat</artifactId>-->
        <!--                    <groupId>org.springframework.boot</groupId>-->
        <!--                </exclusion>-->
        <!--            </exclusions>-->
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.8.1</version>
    </dependency>

    <!--fastJson-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.5</version>
    </dependency>
    <!--redis 依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
    <!--shiro 依赖-->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>1.4.1</version>
    </dependency>
    <!--JWT-->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <!--pagehelper -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.5</version>
    </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- 通用mapper逆向工具 -->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.5</version>
    </dependency>
    <!-- mysql驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
    </dependency>
    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.4.0</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.11</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <!--时序数据库-->
    <dependency>
        <groupId>org.influxdb</groupId>
        <artifactId>influxdb-java</artifactId>
        <version>2.15</version>
    </dependency>
    <!--海康视频-->
    <dependency>
        <groupId>com.hikvision.ga</groupId>
        <artifactId>artemis-http-client</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>

    <dependency>
        <groupId>com.vividsolutions</groupId>
        <artifactId>jts</artifactId>
        <version>1.13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.github.lkqm/hcnetsdk-java -->
    <dependency>
        <groupId>com.github.lkqm</groupId>
        <artifactId>hcnetsdk-java</artifactId>
        <version>0.0.5</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>log4j-api</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.2.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>
        <!--        <dependency>-->
    <!--            <groupId>org.slf4j</groupId>-->
    <!--            <artifactId>slf4j-api</artifactId>-->
    <!--            <version>1.7.6</version>-->
    <!--            <exclusions>-->
    <!--                <exclusion>-->
    <!--                    <groupId>org.slf4j</groupId>-->
    <!--                    <artifactId>slf4j-log4j12</artifactId>-->
    <!--                </exclusion>-->
    <!--            </exclusions>-->
    <!--        </dependency>-->

    <!--SM2 -->
<!--    <dependency>-->
<!--        <groupId>org.bouncycastle</groupId>-->
<!--        <artifactId>bcprov-jdk15on</artifactId>-->
<!--        <version>1.59</version>-->
<!--    </dependency>-->
</dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
View Code
复制代码

 

kafka的文件清除策略

一 清除策略
Kafka 中 默认的日志保存时间为 7 天 ,可以通过调整如下参数修改保存时间。配置文件在kafka的config/server.properties文件中:
log.retention.hours,最低优先级小时,默认 7 天。
log.retention.minutes ,分钟。
log.retention.ms ,最高优先级毫秒。
log.retention.check.interval.ms,负责设置检查周期,默认 5 分钟。
那么日志一旦超过了设置的时间,怎么处理呢?
二 清除策略的分类
1.Kafka 中提供的日志清理策略有 delete 和 compact 两种
2.1 日志删除
1.delete 日志删除:将过期数据删除:
log.cleanup.policy = delete 所有数据启用删除策略
( 1 ) 基于时间:默认打开 。 以 segment 中所有记录中的最大时间戳作为该文件时间戳。
(2) 基于大小:默认关闭 。超过设置的所有日志总大小,删除最早的 segment 。
log.retention.bytes ,默认等于 -1 ,表示无穷大。
思考: 如果一个 segment 中有一部分数据过期,一部分没有过期,怎么处理?
处理的规则:等待获取最新数据时间戳,也就是所有记录中的最大时间戳,作为判断过期的依据,然后进行清理。

 

 

2. compact 日志压缩

compact 日志压缩: 对于相同 key 的不同 value 值,只保留最后一个版本。

 

 

压缩后的 offset 可能是不连续的,比如上图中没有 6 ,当从这些 offset 消费消息时,将会拿到比这个 offset 大
的 offset 对应的消息,实际上会拿到 offset 为 7 的消息,并从这个位置开始消费。
这种策略只适合特殊场景,比如消息的 key 是用户 ID , value 是用户的资料,通过这种压缩策略,整个消息 集里就保存了所有用户最新的资料。

kafka的文件清除策略

https://blog.csdn.net/u011066470/article/details/124074521

 

java制作ssl证书

 

自签名SSL证书的生成

自签证书虽然提示:不安全。但还是有很多的好处,所以下面先说说自签证书的生成,主要使用Java JDK下的:keytool.exe

2:安装完后,根据实际的路径找到keytool.exe,如我的在此路径:C:\Program Files (x86)\Java\jdk1.8.0_101\bin\keytool.exe

3:生成keystore。打开命令行(cmd),去到keytool所在的路径,运行:

keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystoreE:\1work\mykeystore\keystore.p12 -validity 36500 -ext san=ip:127.0.0.1 -dname "CN=garyyan, OU=mycompany, O=mycompany, L=gd, ST=gd, C=china"

此命令中间只需要输入密码,就能生成keystore,假设密码是:123456

其中:

(1)keystore可理解为一个数据库,可以存很多个组数据。

每组数据主要包含下面两种数据:

a:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)

b:可信任的证书实体(trusted certificate entries)——只包含公钥

(2)-keystore E:\1work\mykeystore\keystore.p12,指定在d:\mykeystore(先要手动创建此文件夹),生成keystore:keystore.p12

(3)-alias tomcat,为其指明在keystore中的唯一的别名:tomcat ,因为keystore中可能还存有其它的别名,如:tomcat 2

(4)-storetype PKCS12指明密钥仓库类型是PKCS12

(5)-keyalg RSA,指定加密算法,本例中的采用通用的RAS加密算法

(6)-keysize 2048指定密钥的长度为2048

(7)-validity 3650 指定证书的有效期为3650天

(8)-ext san=ip:192.168.100.132请根据你的服务器的IP地址设置,如果不进行设置,客户端在访问的时候可能会报错

(9)-dname “CN=garyyan, OU=mycompany,O=mycompany,L=gd, ST=gd, C=china”

其中:”CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)”,我在测试的过程中发现随便填就行

4:导出公钥证书(主要用于客户端):

运行命令:

keytool -export -keystore E:\1work\mykeystore\keystore.p12 -alias tomcat -fileE:\1work\mykeystore\mycer.cer -storepass 123456

其中:

(1)-keystore d:\mykeystore\keystore.p12 是指上面的keystore文件

(2)-alias tomcat是指定别名为tomcat的那一组

(3)-file mycer.cer指定在当前目录生成名为mycer.cer的证书

(4)-storepass 123456是上面生成keystore 所用的密码

 <Connector

           port="443" maxThreads="200"

           scheme="https" secure="true" SSLEnabled="true"

     keystoreFile="E:/1work/mykeystore/keystore.p12"

     keystorePass="123456"

     keystoreType="PKCS12"

           clientAuth="false" sslProtocol="TLS"

     />

posted @   wq9  阅读(69)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示