当前位置: 首页 > 知识库问答 >
问题:

Kafka配置min.insync.replicas不工作

姬歌者
2023-03-14

那是我学习Kafka的初期。我正在检查我本地机器中的每一个Kafka属性/概念。

所以我遇到了min.insync.replicas属性,下面是我的理解。如果我误解了什么,请纠正我。

  • 将消息发送到主题后,必须将消息写入至少分钟.insync.replicas关注者数。
  • min.insync.replicas还包括引导。
  • 如果可用活动代理的数量(间接地,在同步副本中)少于指定的min.insync.replicas,则生产者将引发发布消息失败的异常

以下是我创建上述场景所遵循的步骤

  1. 在本地启动了3个代理,代理ID为0、1和2
  2. 创建了主题insync,并使用以下命令
  3. min.insync.replicas设置为2

sudo./kafka-topics.sh--create--zookeeper localhost:2181--replication-factor 3--partitions 1--topic insync--config min.insync.replicas=2

在这一点上,我确定我提供的财产是Kafka选择的

我开始发送消息并使用以下命令从终端消费它们

生产者:./kafka-console-producer.sh--broker-list localhost:9092--topic insync--producer.config../config/producer.properties

至此,我得以成功发送和接收消息。

主题:insync PartitionCount:1 ReplicationFactor:3 Configs:Min.insync.Replicas=2主题:insync Partition:0 Leader:1 Replicas:2,0,1 ISR:1

此时,同步副本只有1个(ISR:1)

我的Kafka版本:kafka2.10-0.10.0.0

以下是生产者的属性:

bootstrap.servers=localhost:9092

ACKS=全部

我预计生成器将失败,并使用NoteNoughReplicasException

公共类NotEnoughReplicasException扩展RetriableException

我是不是漏掉了什么?如何创建方案?

**************************************************************编辑

我没有从控制台生成器生成消息,而是尝试从java代码生成消息。这一次,我在Kafka经纪人中得到了预期的异常。虽然我在生产者(java代码)中就预料到了。由于这个实验提出了更多的问题,我发布了另一个问题。

共有1个答案

纪鸿禧
2023-03-14

ACK是否设置为“全部”?如果没有,请尝试将其设置为全部

 类似资料:
  • 我正在做一个Spring Boot应用程序,并试图以编程方式配置kafka,但由于某些原因,我仍然在从应用程序获取属性。yaml而不是我通过编程设置的

  • 我为3节点Kafka集群设置了ACL,并能够通过生产者控制台和消费者控制台发送和接收主题。现在我想用ACL配置Kafka连接。我尝试了SASL_PLAINTEXT组合和连接。日志文件,它显示以下错误。它没有从源表同步到主题,请在我缺少任何配置的地方提供帮助。 错误日志 我的配置如下文件所示。我在jaas中提到过用户。conf文件并设置到环境中。 1: zookeeper.properties 2:

  • 重要的客户端配置 最重要的老的 scala 版本的 producer 配置 acks compression sync vs async production batch size (for async producers) 最重要的新的 Java 版本的 producer 配置 acks compression batch size 最重要的 consumer 配置是 fetch size。 所

  • 在我们的一个基于spring boot的服务中,我们打算同时连接到两个不同的kafka集群。这些集群都有自己的引导服务器集、主题配置等。它们之间没有任何关联,就像这个问题中的情况一样。 我将有不同类型的消息从不同主题名称的每个集群中读取。可能有或可能没有多个生产者通过此服务连接到两个集群,但我们肯定每个集群至少有一个消费者。 我想知道如何在application.yml中定义属性以满足此设置,以便

  • 但就是不管用。我也试过在-d中使用这个选项,但这也不起作用。 谢谢你的帮助

  • 下面是我正在使用的配置。消息没有错误,从exchange到队列都可以正常工作,并且侦听器可以进行转换,这很好。对于错误消息,我希望发生的是,当我抛出AmqpRejectAndDontRequeueException时,“rabbitQueue”将消息转发到死信交换,并最终进入“rabbitErrorQueue”但死信交换或队列上没有任何活动。有人知道我做错了什么吗?