我有一个集群 Zookeeper(版本3.4.13)(包含3个节点)和一个 Kafka(版本2.11-2.1.0)的集群包含2个节点。我正在使用 Spring Kafka 2.1.9.RELEASE 设置生产者/消费者。
我正在运行自己的Spring Boot应用程序的2节点集群,其中有特定主题的使用者。如果我同时停止两个Kafka节点,然后仅启动其中一个(可能不充当“组协调器”),则消费者停止使用队列中的消息(即使在一个Kafka节点启动并运行之后),直到我重新启动Spring Boot应用程序。
在此问题上找不到太多资源。需要了解造成这种情况的原因,即Kafka群集出现故障的地方,然后启动其中一个节点(也许应该自动选出领导者)。
以下是我的使用者配置:
Map<String, Object> properties = new HashMap<>();
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServerUrl + ":" + kafkaServerPort +
(StringUtils.isEmpty(additionalBrokers)?"":","+additionalBrokers));
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
properties.put(ConsumerConfig.GROUP_ID_CONFIG, "testGroup");
properties.put(JsonDeserializer.TRUSTED_PACKAGES, "com.test.model");
properties.put(JsonDeserializer.VALUE_DEFAULT_TYPE,"com.test.EMailConfig");
我希望,当仅再次启动一个Kafka群集节点时,使用者应该重新开始使用消息。
有人遇到过这样的问题吗?请发表您的建议。
以下是1个代理停止时来自describe命令的输出的屏幕截图: enter image description here
谢谢。
答案 0 :(得分:0)
该问题无法重现。至少对我来说。这就是我所做的
然后和邮递员一起给我发了一条短信;它针对该主题产生并且也立即被使用,随后关闭kafka节点,然后启动kafka节点。现在我重新发送了;它被生产并且消耗了罚款。