Kafka安装及简单使用介绍

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
在这里插入图片描述在这里插入图片描述

文章目录

  • 一、什么是Kafka?
    • 1.1 基本概念介绍
    • 1.2 消息中间件对比
  • 二、kafka安装配置
    • 2.1 Docker安装zookeeper
    • 2.2 Docker安装kafka
  • 三、Spring Boot集成Kafka
    • 3.1 引入依赖
    • 3.2 添加yml配置
    • 3.3 生产者
    • 3.4 消费者
  • 四、配置介绍
    • 4.1 生产者配置
    • 4.1 消费者配置

23

一、什么是Kafka?

官网: https://kafka.apache.org/

Apache Kafka 是一个分布式流处理平台,最初由LinkedIn开发,并于2011年成为Apache软件基金会的顶级项目。Kafka设计目标是提供高吞吐量、低延迟的消息发布和订阅系统,尤其适合在大规模实时数据处理场景下工作。

1.1 基本概念介绍

  • Broker 可以简单理解为一个 Kafka 节点, 多个 Broker 节点构成整个 Kafka 集群;
  • Topic 某种类型的消息的合集;
    • Partition 它是 Topic 在物理上的分组, 多个 Partition 会被分散地存储在不同的 Kafka 节点上; 单个 Partition 的消息是保证有序的, 但整个 Topic 的消息就不一定是有序的;
    • Segment 包含消息内容的指定大小的文件, 由 index 文件和 log 文件组成; 一个 Partition 由多个 Segment 文件组成
      • Offset Segment 文件中消息的索引值, 从 0 开始计数
    • Replica (N) 消息的冗余备份, 表现为每个 Partition 都会有 N 个完全相同的冗余备份, 这些备份会被尽量分散存储在不同的机器上;
  • Producer 通过 Broker 发布新的消息到某个 Topic 中;
  • Consumer 通过 Broker 从某个 Topic 中获取消息;

1.2 消息中间件对比

消息中间件建议
Kafka 追求高吞吐量,适合产生大量数据的互联网服务的数据收集业务
RocketMQ 可靠性要求很高的金融互联网领域,稳定性高,经历了多次阿里双11考验
RabbitMQ 性能较好,社区活跃度高,数据量没有那么大,优先选择功能比较完备的RabbitMQ

二、kafka安装配置

Kafka对于 zookeeper 是强依赖,保存kafka相关的节点数据,所以安装Kafka之前必须先安装zookeeper

2.1 Docker安装zookeeper

docker pull zookeeper:3.4.14

创建容器

docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14

2.2 Docker安装kafka

docker pull wurstmeister/kafka:2.12-2.3.1

创建容器
192.168.0.0 改为自己服务器的ip

docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.0.0 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.0.0:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.0:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
-p 9092:9092 wurstmeister/kafka:2.12-2.3.1

查看启动日志

docker logs -f kafka

在这里插入图片描述

三、Spring Boot集成Kafka

3.1 引入依赖

        <!-- kafkfa -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.kafka</groupId>
                    <artifactId>kafka-clients</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </dependency>

3.2 添加yml配置

server:
  port: 20087
spring:
  application:
    name: consumer-server
  kafka:
    bootstrap-servers: 192.168.0.0:9092  # 自己的Kafka地址
    producer:
      retries: 10  #重试次数
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: ${spring.application.name}-test
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

3.3 生产者

@RestController
public class HelloController {

    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;

    @GetMapping("/hello")
    public String hello(){
        User user = new User();
        user.setId(1L);
        user.setName("小明");
        user.setAge(18);
        user.setEmail("123qq.com");
        kafkaTemplate.send("user-topic", JSON.toJSONString(user));

        return "ok";
    }

}

3.4 消费者

@Component
public class HelloListener {

    @KafkaListener(topics = "user-topic")
    public void onMessage(String message){
        if(!StringUtils.isEmpty(message)){
            User user = JSON.parseObject(message, User.class);
            System.out.println("kafka接收到的消息为:"+user);
        }
    }
}

访问 http://localhost:20087/hello
测试成功
在这里插入图片描述

四、配置介绍

4.1 生产者配置

NAMEDESCRIPTIONTYPEDEFAULTVALID VALUESIMPORTANCE
bootstrap.servershost/port列表,用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,…,无需添加所有的集群地址,kafka会根据提供的地址发现其他的地址(你可以多提供几个,以防提供的服务器关闭)listhigh
key.serializer实现 org.apache.kafka.common.serialization.Serializer 接口的 key 的 Serializer 类。classhigh
value.serializer实现 org.apache.kafka.common.serialization.Serializer 接口的value 的 Serializer 类。classhigh
acks生产者需要leader确认请求完成之前接收的应答数。此配置控制了发送消息的耐用性,支持以下配置:string1[all, -1, 0, 1]high
acks=0 如果设置为0,那么生产者将不等待任何消息确认。消息将立刻添加到socket缓冲区并考虑发送。在这种情况下不能保障消息被服务器接收到。并且重试机制不会生效(因为客户端不知道故障了没有)。每个消息返回的offset始终设置为-1。
acks=1,这意味着leader写入消息到本地日志就立即响应,而不等待所有follower应答。在这种情况下,如果响应消息之后但follower还未复制之前leader立即故障,那么消息将会丢失。
acks=all 这意味着leader将等待所有副本同步后应答消息。此配置保障消息不会丢失(只要至少有一个同步的副本或者)。这是最强壮的可用性保障。等价于acks=-1。
buffer.memory生产者用来缓存等待发送到服务器的消息的内存总字节数。如果消息发送比可传递到服务器的快,生产者将阻塞max.block.ms之后,抛出异常。long33554432[0,…]high
此设置应该大致的对应生产者将要使用的总内存,但不是硬约束,因为生产者所使用的所有内存都用于缓冲。一些额外的内存将用于压缩(如果启动压缩),以及用于保持发送中的请求。
compression.type数据压缩的类型。默认为空(就是不压缩)。有效的值有 none,gzip,snappy, 或 lz4。压缩全部的数据批,因此批的效果也将影响压缩的比率(更多的批次意味着更好的压缩)。stringnonehigh
retries设置一个比零大的值,客户端如果发送失败则会重新发送。注意,这个重试功能和客户端在接到错误之后重新发送没什么不同。如果max.in.flight.requests.per.connection没有设置为1,有可能改变消息发送的顺序,因为如果2个批次发送到一个分区中,并第一个失败了并重试,但是第二个成功了,那么第二个批次将超过第一个。int0[0,…,2147483647]high
ssl.key.password密钥仓库文件中的私钥的密码。passwordnullhigh
ssl.keystore.location密钥仓库文件的位置。可用于客户端的双向认证。stringnullhigh
ssl.keystore.password密钥仓库文件的仓库密码。只有配置了ssl.keystore.location时才需要。passwordnullhigh
ssl.truststore.location信任仓库的位置stringnullhigh
ssl.truststore.password信任仓库文件的密码passwordnullhigh
batch.size当多个消息要发送到相同分区的时,生产者尝试将消息批量打包在一起,以减少请求交互。这样有助于客户端和服务端的性能提升。该配置的默认批次大小(以字节为单位):int16384[0,…]medium
不会打包大于此配置大小的消息。
发送到broker的请求将包含多个批次,每个分区一个,用于发送数据。
较小的批次大小有可能降低吞吐量(批次大小为0则完全禁用批处理)。一个非常大的批次大小可能更浪费内存。因为我们会预先分配这个资源。
client.id当发出请求时传递给服务器的id字符串。这样做的目的是允许服务器请求记录记录这个【逻辑应用名】,这样能够追踪请求的源,而不仅仅只是ip/prot。string“”medium
connections.max.idle.ms多少毫秒之后关闭闲置的连接。long540000medium
linger.ms生产者组将发送的消息组合成单个批量请求。正常情况下,只有消息到达的速度比发送速度快的情况下才会出现。但是,在某些情况下,即使在适度的负载下,客户端也可能希望减少请求数量。此设置通过添加少量人为延迟来实现。- 也就是说,不是立即发出一个消息,生产者将等待一个给定的延迟,以便和其他的消息可以组合成一个批次。这类似于Nagle在TCP中的算法。此设置给出批量延迟的上限:一旦我们达到分区的batch.size值的记录,将立即发送,不管这个设置如何,但是,如果比这个小,我们将在指定的“linger”时间内等待更多的消息加入。此设置默认为0(即无延迟)。假设,设置 linger.ms=5,将达到减少发送的请求数量的效果,但对于在没有负载情况,将增加5ms的延迟。long0[0,…]medium
max.block.ms该配置控制 KafkaProducer.send() 和 KafkaProducer.partitionsFor() 将阻塞多长时间。此外这些方法被阻止,也可能是因为缓冲区已满或元数据不可用。在用户提供的序列化程序或分区器中的锁定不会计入此超时。long60000[0,…]medium
max.request.size请求的最大大小(以字节为单位)。此设置将限制生产者的单个请求中发送的消息批次数,以避免发送过大的请求。这也是最大消息批量大小的上限。请注意,服务器拥有自己的批量大小,可能与此不同。int1048576[0,…]medium
partitioner.class实现Partitioner接口的的Partitioner类。classorg.apache.kafka.clients.producer.internals.DefaultPartitionermedium
receive.buffer.bytes读取数据时使用的TCP接收缓冲区(SO_RCVBUF)的大小。如果值为-1,则将使用OS默认值。int32768[-1,…]medium
request.timeout.ms该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,客户端将在必要时重新发送请求,如果重试耗尽,则该请求将失败。 这应该大于replica.lag.time.max.ms,以减少由于不必要的生产者重试引起的消息重复的可能性。int30000[0,…]medium
sasl.jaas.configJAAS配置文件使用的格式的SASL连接的JAAS登录上下文参数。这里描述JAAS配置文件格式。该值的格式为:‘(=)*;’passwordnullmedium
sasl.kerberos.service.nameKafka运行的Kerberos主体名称。可以在Kafka的JAAS配置或Kafka的配置中定义。stringnullmedium
sasl.mechanismSASL机制用于客户端连接。这是安全提供者可用与任何机制。GSSAPI是默认机制。stringGSSAPImedium
security.protocol用于与broker通讯的协议。 有效值为:PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL。stringPLAINTEXTmedium
send.buffer.bytes发送数据时,用于TCP发送缓存(SO_SNDBUF)的大小。如果值为 -1,将默认使用系统的。int131072[-1,…]medium
ssl.enabled.protocols启用SSL连接的协议列表。listTLSv1.2,TLSv1.1,TLSv1medium
ssl.keystore.type密钥存储文件的文件格式。对于客户端是可选的。stringJKSmedium
ssl.protocol最近的JVM中允许的值是TLS,TLSv1.1和TLSv1.2。 较旧的JVM可能支持SSL,SSLv2和SSLv3,但由于已知的安全漏洞,不建议使用SSL。stringTLSmedium
ssl.provider用于SSL连接的安全提供程序的名称。默认值是JVM的默认安全提供程序。stringnullmedium
ssl.truststore.type信任仓库文件的文件格式。stringJKSmedium
enable.idempotence当设置为‘true’,生产者将确保每个消息正好一次复制写入到stream。如果‘false’,由于broker故障,生产者重试。即,可以在流中写入重试的消息。此设置默认是‘false’。请注意,启用幂等式需要将max.in.flight.requests.per.connection设置为1,重试次数不能为零。另外acks必须设置为“全部”。如果这些值保持默认值,我们将覆盖默认值。 如果这些值设置为与幂等生成器不兼容的值,则将抛出一个ConfigException异常。如果这些值设置为与幂等生成器不兼容的值,则将抛出一个ConfigException异常。booleanFALSElow
interceptor.classes实现ProducerInterceptor接口,你可以在生产者发布到Kafka群集之前拦截(也可变更)生产者收到的消息。默认情况下没有拦截器。listnulllow
max.in.flight.requests.per.connection阻塞之前,客户端单个连接上发送的未应答请求的最大数量。注意,如果此设置设置大于1且发送失败,则会由于重试(如果启用了重试)会导致消息重新排序的风险。int5[1,…]low
metadata.max.age.ms在一段时间段之后(以毫秒为单位),强制更新元数据,即使我们没有看到任何分区leader的变化,也会主动去发现新的broker或分区。long300000[0,…]low
metric.reporters用作metrics reporters(指标记录员)的类的列表。实现MetricReporter接口,将受到新增加的度量标准创建类插入的通知。 JmxReporter始终包含在注册JMX统计信息中。list“”low
metrics.num.samples维护用于计算度量的样例数量。int2[1,…]low
metrics.recording.level指标的最高记录级别。stringINFO[INFO, DEBUG]low
metrics.sample.window.ms度量样例计算上long30000[0,…]low
reconnect.backoff.max.ms重新连接到重复无法连接的代理程序时等待的最大时间(毫秒)。 如果提供,每个主机的回退将会连续增加,直到达到最大值。 计算后退增加后,增加20%的随机抖动以避免连接风暴。long1000[0,…]low
reconnect.backoff.ms尝试重新连接到给定主机之前等待的基本时间量。这避免了在循环中高频率的重复连接到主机。这种回退适应于客户端对broker的所有连接尝试。long50[0,…]low
retry.backoff.ms尝试重试指定topic分区的失败请求之前等待的时间。这样可以避免在某些故障情况下高频次的重复发送请求。long100[0,…]low
sasl.kerberos.kinit.cmdKerberos kinit 命令路径。string/usr/bin/kinitlow
sasl.kerberos.min.time.before.reloginLogin线程刷新尝试之间的休眠时间。long60000low
sasl.kerberos.ticket.renew.jitter添加更新时间的随机抖动百分比。double0.05low
sasl.kerberos.ticket.renew.window.factor登录线程将睡眠,直到从上次刷新ticket到期时间的指定窗口因子为止,此时将尝试续订ticket。double0.8low
ssl.cipher.suites密码套件列表。这是使用TLS或SSL网络协议来协商用于网络连接的安全设置的认证,加密,MAC和密钥交换算法的命名组合。默认情况下,支持所有可用的密码套件。listnulllow
ssl.endpoint.identification.algorithm使用服务器证书验证服务器主机名的端点识别算法。stringnulllow
ssl.keymanager.algorithm用于SSL连接的密钥管理因子算法。默认值是为Java虚拟机配置的密钥管理器工厂算法。stringSunX509low
ssl.secure.random.implementation用于SSL加密操作的SecureRandom PRNG实现。stringnulllow
ssl.trustmanager.algorithm用于SSL连接的信任管理因子算法。默认值是JAVA虚拟机配置的信任管理工厂算法。stringPKIXlow
transaction.timeout.ms生产者在主动中止正在进行的交易之前,交易协调器等待事务状态更新的最大时间(以ms为单位)。如果此值大于broker中的max.transaction.timeout.ms设置,则请求将失败,并报“InvalidTransactionTimeout”错误。int60000low
transactional.id用于事务传递的TransactionalId。这样可以跨多个生产者会话的可靠性语义,因为它允许客户端保证在开始任何新事务之前使用相同的TransactionalId的事务已经完成。如果没有提供TransactionalId,则生产者被限制为幂等传递。请注意,如果配置了TransactionalId,则必须启用enable.idempotence。 默认值为空,这意味着无法使用事务。stringnullnon-empty stringlow

4.1 消费者配置

NAMEDESCRIPTIONTYPEDEFAULTVALID VALUESIMPORTANCE
bootstrap.servershost/port,用于和kafka集群建立初始化连接。因为这些服务器地址仅用于初始化连接,并通过现有配置的来发现全部的kafka集群成员(集群随时会变化),所以此列表不需要包含完整的集群地址(但尽量多配置几个,以防止配置的服务器宕机)。listhigh
key.deserializerkey的解析序列化接口实现类(Deserializer)。classhigh
value.deserializervalue的解析序列化接口实现类(Deserializer)classhigh
fetch.min.bytes服务器哦拉取请求返回的最小数据量,如果数据不足,请求将等待数据积累。默认设置为1字节,表示只要单个字节的数据可用或者读取等待请求超时,就会应答读取请求。将此值设置的越大将导致服务器等待数据累积的越长,这可能以一些额外延迟为代价提高服务器吞吐量。int1[0,…]high
group.id此消费者所属消费者组的唯一标识。如果消费者用于订阅或offset管理策略的组管理功能,则此属性是必须的。string“”high
heartbeat.interval.ms当使用Kafka的分组管理功能时,心跳到消费者协调器之间的预计时间。心跳用于确保消费者的会话保持活动状态,并当有新消费者加入或离开组时方便重新平衡。该值必须必比session.timeout.ms小,通常不高于1/3。它可以调整的更低,以控制正常重新平衡的预期时间。int3000high
max.partition.fetch.bytes服务器将返回每个分区的最大数据量。如果拉取的第一个非空分区中第一个消息大于此限制,则仍然会返回消息,以确保消费者可以正常的工作。broker接受的最大消息大小通过message.max.bytes(broker config)或max.message.bytes (topic config)定义。参阅fetch.max.bytes以限制消费者请求大小。int1048576[0,…]high
session.timeout.ms用于发现消费者故障的超时时间。消费者周期性的发送心跳到broker,表示其还活着。如果会话超时期满之前没有收到心跳,那么broker将从分组中移除消费者,并启动重新平衡。请注意,该值必须在broker配置的group.min.session.timeout.ms和group.max.session.timeout.ms允许的范围内。int10000high
ssl.key.password密钥存储文件中的私钥的密码。 客户端可选passwordnullhigh
ssl.keystore.location密钥存储文件的位置, 这对于客户端是可选的,并且可以用于客户端的双向认证。stringnullhigh
ssl.keystore.password密钥仓库文件的仓库密码。客户端可选,只有ssl.keystore.location配置了才需要。passwordnullhigh
ssl.truststore.location信任仓库文件的位置stringnullhigh
ssl.truststore.password信任仓库文件的密码passwordnullhigh
auto.offset.reset当Kafka中没有初始offset或如果当前的offset不存在时(例如,该数据被删除了),该怎么办。stringlatest[latest, earliest, none]medium
最早:自动将偏移重置为最早的偏移
最新:自动将偏移重置为最新偏移
none:如果消费者组找到之前的offset,则向消费者抛出异常
其他:抛出异常给消费者。
connections.max.idle.ms指定在多少毫秒之后关闭闲置的连接long540000medium
enable.auto.commit如果为true,消费者的offset将在后台周期性的提交booleanTRUEmedium
exclude.internal.topics内部topic的记录(如偏移量)是否应向消费者公开。如果设置为true,则从内部topic接受记录的唯一方法是订阅它。booleanTRUEmedium
fetch.max.bytes服务器为拉取请求返回的最大数据值。这不是绝对的最大值,如果在第一次非空分区拉取的第一条消息大于该值,该消息将仍然返回,以确保消费者继续工作。接收的最大消息大小通过message.max.bytes (broker config) 或 max.message.bytes (topic config)定义。注意,消费者是并行执行多个提取的。int52428800[0,…]medium
max.poll.interval.ms使用消费者组管理时poll()调用之间的最大延迟。消费者在获取更多记录之前可以空闲的时间量的上限。如果此超时时间期满之前poll()没有调用,则消费者被视为失败,并且分组将重新平衡,以便将分区重新分配给别的成员。int300000[1,…]medium
max.poll.records在单次调用poll()中返回的最大记录数。int500[1,…]medium
partition.assignment.strategy当使用组管理时,客户端将使用分区分配策略的类名来分配消费者实例之间的分区所有权listclass org.apache.kafkamedium
.clients.consumer
.RangeAssignor
receive.buffer.bytes读取数据时使用的TCP接收缓冲区(SO_RCVBUF)的大小。 如果值为-1,则将使用OS默认值。int65536[-1,…]medium
request.timeout.ms配置控制客户端等待请求响应的最长时间。 如果在超时之前未收到响应,客户端将在必要时重新发送请求,如果重试耗尽则客户端将重新发送请求。int305000[0,…]medium
sasl.jaas.configJAAS配置文件中SASL连接登录上下文参数。 这里描述JAAS配置文件格式。 该值的格式为: ‘(=)*;’passwordnullmedium
sasl.kerberos.service.nameKafka运行Kerberos principal名。可以在Kafka的JAAS配置文件或在Kafka的配置文件中定义。stringnullmedium
sasl.mechanism用于客户端连接的SASL机制。安全提供者可用的机制。GSSAPI是默认机制。stringGSSAPImedium
security.protocol用于与broker通讯的协议。 有效值为:PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL。stringPLAINTEXTmedium
send.buffer.bytes发送数据时要使用的TCP发送缓冲区(SO_SNDBUF)的大小。 如果值为-1,则将使用OS默认值。int131072[-1,…]medium
ssl.enabled.protocols启用SSL连接的协议列表。listTLSv1.2,TLSv1.1,TLSv1medium
ssl.keystore.typekey仓库文件的文件格式,客户端可选。stringJKSmedium
ssl.protocol用于生成SSLContext的SSL协议。 默认设置是TLS,这对大多数情况都是适用的。 最新的JVM中的允许值为TLS,TLSv1.1和TLSv1.2。 较旧的JVM可能支持SSL,SSLv2和SSLv3,但由于已知的安全漏洞,不建议使用SSL。stringTLSmedium
ssl.provider用于SSL连接的安全提供程序的名称。 默认值是JVM的默认安全提供程序。stringnullmedium
ssl.truststore.type信任存储文件的文件格式。stringJKSmedium
auto.commit.interval.ms如果enable.auto.commit设置为true,则消费者偏移量自动提交给Kafka的频率(以毫秒为单位)。int5000[0,…]low
check.crcs自动检查CRC32记录的消耗。 这样可以确保消息发生时不会在线或磁盘损坏。 此检查增加了一些开销,因此在寻求极致性能的情况下可能会被禁用。booleanTRUElow
client.id在发出请求时传递给服务器的id字符串。 这样做的目的是通过允许将逻辑应用程序名称包含在服务器端请求日志记录中,来跟踪ip/port的请求源。string“”low
fetch.max.wait.ms如果没有足够的数据满足fetch.min.bytes,服务器将在接收到提取请求之前阻止的最大时间。int500[0,…]low
interceptor.classes用作拦截器的类的列表。 你可实现ConsumerInterceptor接口以允许拦截(也可能变化)消费者接收的记录。 默认情况下,没有拦截器。listnulllow
metadata.max.age.ms在一定时间段之后(以毫秒为单位的),强制更新元数据,即使没有任何分区领导变化,任何新的broker或分区。long300000[0,…]low
metric.reporters用作度量记录员类的列表。实现MetricReporter接口以允许插入通知新的度量创建的类。JmxReporter始终包含在注册JMX统计信息中。list“”low
metrics.num.samples保持的样本数以计算度量。int2[1,…]low
metrics.recording.level最高的记录级别。stringINFO[INFO, DEBUG]low
metrics.sample.window.msThe window of time a metrics sample is computed over.long30000[0,…]low
reconnect.backoff.ms尝试重新连接指定主机之前等待的时间,避免频繁的连接主机,这种机制适用于消费者向broker发送的所有请求。long50[0,…]low
retry.backoff.ms尝试重新发送失败的请求到指定topic分区之前的等待时间。避免在某些故障情况下,频繁的重复发送。long100[0,…]low
sasl.kerberos.kinit.cmd Kerberoskinit命令路径。string/usr/bin/kinitlow
sasl.kerberos.min.time.before.relogin尝试/恢复之间的登录线程的休眠时间。long60000low
sasl.kerberos.ticket.renew.jitter添加到更新时间的随机抖动百分比。double0.05low
sasl.kerberos.ticket.renew.window.factor登录线程将休眠,直到从上次刷新到ticket的指定的时间窗口因子到期,此时将尝试续订ticket。double0.8low
ssl.cipher.suites密码套件列表,用于TLS或SSL网络协议的安全设置,认证,加密,MAC和密钥交换算法的明明组合。默认情况下,支持所有可用的密码套件。listnulllow
ssl.endpoint.identification.algorithm使用服务器证书验证服务器主机名的端点识别算法。stringnulllow
ssl.keymanager.algorithm密钥管理器工厂用于SSL连接的算法。 默认值是为Java虚拟机配置的密钥管理器工厂算法。stringSunX509low
ssl.secure.random.implementation用于SSL加密操作的SecureRandom PRNG实现。stringnulllow
ssl.trustmanager.algorithm信任管理器工厂用于SSL连接的算法。 默认值是为Java虚拟机配置的信任管理器工厂算法。stringPKIXlow

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙HarmonyOS-带笔锋手写板(三)

笔者用ArkTS 写了一个简单的带笔锋的手写板应用&#xff0c;并且可以将手写内容保存为图片。 一、效果图 手写效果如下&#xff08;在鸿蒙手机模拟器上运行&#xff0c;手写时反应可能会有点慢&#xff09; 二、实现方法 参考文章&#xff1a; 支持笔锋效果的手写签字控件_a…

【数据结构】详细剖析线性表

顺序表与链表的比较 导言一、线性表二、线性表的存储结构三、顺序表和链表的相同点四、顺序表与链表之间的差异五、存储结构的选择六、静态顺序表的基本操作七、无头结点单链表的基本操作结语 导言 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff0…

VStudio2022导出Qt项目在Linux的Qtcreator中运行修复错误记录

公司项目中的代码在VStudio2022中编写&#xff0c;交给我需要移植Linux的Qtcreator中&#xff0c;记录一下移植过程中的遇到的坑&#xff0c;按照错误顺序由高到低记录一下&#xff0c;边尝试边解决边记录&#xff0c;写作方面没有逻辑&#xff0c;每个人项目环境不一样&#x…

P1019 [NOIP2000 提高组] 单词接龙 刷题笔记

P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路来自 大佬 Chardo 的个人中心 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 匹配 &#xff1a; 将 第一个字符串末尾 和第二个字符串第一个开始匹配 如果 j<i这段走完了 flag还没…

【ROS2】MOMO的鱼香ROS2(二)ROS2入门篇——ROS2初体验

ROS2初体验 引言专业术语认识1 认识ROS21.1 ROS2版本对照表1.2 ROS与ROS2对比1.3 ROS2架构1.3.1 DDS实现层1.3.2 ROS中间件接口&#xff08;RMW&#xff09;1.3.3 ROS2客户端库 RCL 2 安装ROS22.1 ROS安装&#xff08;一键式&#xff09;2.2 手动安装ROS22.2.1 添加ROS软件源2.…

4.28 构建onnx结构模型-Unfold

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Unfold 结点进行分析 方式 方法…

鸿蒙(OpenHarmony)系统之智能语音部件(1)

本文重点参考&#xff1a; OpenHarmony/ai_intelligent_voice_framework 一、总体概述 1. 功能简介及架构 智能语音组件包括智能语音服务框架和智能语音驱动&#xff0c;主要实现了语音注册及语音唤醒相关功能。 智能语音组件架构图如下图所示&#xff1a; &#xff08;1&a…

【ONE·MySQL || 数据类型 表的约束】

总言 主要内容&#xff1a;介绍MySQL中的常见数据类型&#xff08;数值类型、文本二进制类型、时间日期、字符串类型&#xff09;&#xff0c;以及对表的约束&#xff08;非空约束、默认约束、列描述、零填充约束、自增长约束、主键约束、唯一键约束、外键约束&#xff09;。  …

详解维吉尼亚密码(附四种攻击策略)

目录 一. 介绍 二. 破解维吉尼亚密码 2.1 频率统计 2.2 提高型频率统计法 2.3 Kasiski攻击法 2.4 重合指数攻击法&#xff08;index of coincidence method&#xff09; 三. 小结 一. 介绍 我们知道英语字母的出现频率是有规律的&#xff0c;比如像下表&#xff1a; 掌…

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…

2024任务驱动Java程序设计讲课提纲

文章目录 为何采用任务驱动&#xff1f;任务驱动Java程序设计课程概述项目一&#xff1a;踏上Java开发之旅任务1&#xff1a;安装配置JDK并开发第一个Java程序1、安装JDK2、配置JDK环境变量3、开发第一个Java程序 任务2&#xff1a;搭建Java集成开发环境IntelliJ IDEA1、安装In…

研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去&#xff0c;马上要跨如2024年。祝大家在新的一年&#xff0c;有个好收成。 一直以来不是很确定&#xff1a; 同样的的模板&#xff0c;在各个cpp分别出现&#xff0c;编译器要实现几份&#xff1f; 研究一下。 用命令行的编译方法&#xff0c;参考&#xff1a…

【xdma】 pcie.bar设置

FPGA优质开源项目– PCIE通信 xdma 两者保持一致 FPGA开源项目 – PCIE I/O控制卡 xdma PCIe的XDMA应用 读写部分分为两种&#xff0c;一种是数据的读写&#xff0c;另一种是配置数据的读写&#xff0c;在数据读写部分&#xff0c;DMA通过MIG控制DDR完成数据读写。配置数据…

Ubuntu 22.04 安装ftp实现与windows文件互传

Ubuntu 22.04 安装ftp实现与windows文件互传 1、配置安装 安装&#xff1a; sudo apt install vsftpd -y使能开机自启&#xff1a; sudo systemctl enable vsftpd 启动&#xff1a; sudo systemctl start vsftpd创建ftp工作目录&#xff1a; sudo mkdir -p /home/ftp/uftp…

Elasticsearch-8.11.1 (2+1)HA(高可用)集群部署

目录 一、环境描述 二、安装 ES 2.1 下载Elasticsearch 2.2 解压Elasticsearch 2.3 创建es服务账号/密码 2.3 修改服务器配置 2.4 配置节点 2.4.1 配置说明 2.4.2 配置高可用集群 2.4.2.1 maser节点服务配置 2.4.2.2 node1 节点服务配置 2.4.2.3 node2 节点服务配置…

ARCGIS PRO SDK GeometryEngine处理独立几何图形

1、面积类&#xff1a;pol为Polygon 1).Area&#xff1a;获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

SLAM学习入门--机器学习

文章目录 机器学习逻辑回归&#xff08;LR&#xff09;基本原理为什么 LR 要使用 sigmoid 函数&#xff1f;LR 可以用核函数么&#xff1f;为什么 LR 用交叉熵损失而不是平方损失&#xff1f;LR 能否解决非线性分类问题&#xff1f;LR为什么要离散特征&#xff1f;逻辑回归是处…

【JavaScript】垃圾回收与内存泄漏

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

SPI机制原理+使用

一、概述 SPI全称&#xff08;Service Provider Interface&#xff09;&#xff0c;是JDK内置的一种服务提供发现机制&#xff1b;SPI机制提供了组件发现和注册方式&#xff0c;可以为应用程序提供灵活的插件机制&#xff0c; 主要原理&#xff1a;接口 反射 配置文件。 二、…

软件测试/测试开发丨Python常用数据结构学习笔记

Python常用数据结构 list 列表 列表定义 列表是有序的可变元素的集合&#xff0c;使用中括号[]包围&#xff0c;元素之间用逗号分隔列表是动态的&#xff0c;可以随时扩展和收缩列表是异构的&#xff0c;可以同时存放不同类型的对象列表中允许出现重复元素 列表使用&#x…