AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77120245
Accepted
banan3'14
banan3'14
Asked: 2023-09-17 10:08:49 +0800 CST2023-09-17 10:08:49 +0800 CST 2023-09-17 10:08:49 +0800 CST

无法在 Spring Kafka 中建立与节点 -1 (localhost/127.0.0.1:9092) 的连接

  • 772

我将 Spring Kafka 添加到我的 Spring 应用程序中并期望它能够工作,但是我得到了

INFO     [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka version: 3.4.1
INFO --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka commitId: 8a516edc2755df89
INFO --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka startTimeMs: 1694915576434
INFO --- [| adminclient-1] org.apache.kafka.clients.NetworkClient   : [AdminClient clientId=adminclient-1] Node -1 disconnected.
WARN --- [| adminclient-1] org.apache.kafka.clients.NetworkClient   : [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established.

我将其添加到我的pom.xml

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>3.0.9</version>
</dependency>

并配置它

@Bean
public KafkaAdmin kafkaAdmin() {
    Map<String, Object> configs = new HashMap<>();
    configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
    return new KafkaAdmin(configs);
}

@Bean
public NewTopic checkInTopic() {
    return new NewTopic(checkInTopicName, 1, (short) 1);
}

其中bootstrapAddress通过以下方式配置application.yml:

spring:  
  kafka:
    bootstrap-servers: localhost:9092

我还有一个生产者配置:

@Bean
public KafkaTemplate<String, String> kafkaTemplate() {
    return new KafkaTemplate<>(producerFactory());
}

@Bean
public ProducerFactory<String, String> producerFactory() {
    return new DefaultKafkaProducerFactory<>(Map.of(
            ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress,
            ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class,
            ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class
    ));
}

怎么了?我应该以某种方式在本地主机端口上手动运行 Kafka 吗9092?我假设它是由 Spring 框架自动完成的,就像我不必将它部署在 tomcat 上一样,因为它是捆绑的。它启动 Kafka 服务还是我应该自己启动?

apache-kafka
  • 1 1 个回答
  • 36 Views

1 个回答

  • Voted
  1. Best Answer
    Anish B.
    2023-09-17T12:20:13+08:002023-09-17T12:20:13+08:00

    是的,您必须在 localhost port 上手动运行 Kafka 9092。

    Spring Kafka 模块未与 Kafka 二进制文件打包。它仅包含对 Kafka 主题、生产者和消费者进行操作所需的 Kafka API。

    另一方面,您需要在系统上下载并设置 Apache Kafka。

    有两种运行 Kafka 服务的选项:使用旧版 Zookeeper 和更新的 KRaft。

    KRaft模式比ZooKeeper模式更具可扩展性,允许Kafka集群处理更多流量和数据。KRaft 模式比 ZooKeeper 模式更快,从而实现更低的延迟和更高的吞吐量。

    初始步骤是相同的​​。

    1. 从这里下载最新版本的 Kafka 。
    2. 导航到bin/kafka 目录。

    克拉夫特

    步骤继续:

    1. 使用构建项目./gradlew jar -PscalaVersion=2.13.10
    2. 生成集群 UUID KAFKA_CLUSTER_ID="$(./kafka-storage.sh random-uuid)"
    3. 设置日志目录格式 ./kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ../config/kraft/server.properties
    4. 修改 使其log.dirs指向其他有效目录而不是/tmp/kraft-combined-logs.
    5. 启动 Kafka 代理。 ./kafka-server-start.sh ../config/kraft/server.properties

    对于 Windows,有一个文件夹windows,其中包含与 Linux/Mac shell 脚本相对应的批处理脚本。

    动物园管理员

    步骤继续:

    1. 启动动物园管理员。

      • Linux/苹果机:./zookeeper-server-start.sh ../config/zookeeper.properties
      • 视窗:windows\zookeeper-server-start.bat ..\..\config\zookeeper.properties
    2. 编辑server.properties

      • 取消注释这行代码:listeners=PLAINTEXT://localhost:9092以使代理能够在此套接字上侦听。
      • 修改 使其log.dirs指向其他有效目录而不是/tmp/kafka-logs.
    3. 启动 Kafka 代理。

      • Linux/苹果机:./kafka-server-start.sh ../config/server.properties
      • 视窗:windows\kafka-server-start.bat ..\..\config\server.properties

    这就是初始设置的全部内容。


    请访问此处,了解有关主题创建以及与 Kafka 相关的其他内容的更多信息。

    现在,Spring 应用程序将能够连接到 Kafka。

    • 2

相关问题

  • 数组中多条消息的架构指南

  • 微服务中的 Kafka 用于提供交易

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve