猿问

弹簧启动卡夫卡不起作用 - 消费者不接收消息

我正在尝试运行一个简单的弹簧启动Kafka应用程序,但我无法使其工作。我已经遵循了各种教程,现在我正在实现这个教程,但是当我启动应用程序时,就会发生这种情况:

我可以在控制台中写入,但使用者不会收到任何消息。

这是我的春季应用课程:


@SpringBootApplication(scanBasePackages = "com.springmiddleware")

@ComponentScan("com.springmiddleware")

@EnableAutoConfiguration

@EntityScan("com.springmiddleware")

public class SpringMiddlewareApplication implements CommandLineRunner{




    public static void main(String[] args) throws Exception {


        SpringApplication.run(SpringMiddlewareApplication.class, args);


    }


    @Autowired

    private Producer sender;


    @Override 

    public void run (String... strings) {

        sender.send("Hello world");

    }


}

应用:


spring:

  kafka:

    bootstrap-servers: localhost:8080


app:

  topic:

    foo: foo.t


logging:

  level:

    root: ERROR

    org.springframework.web: ERROR

    com.memorynotfound: DEBUG

使用者类、生产者类及其配置的类与本教程中编写的类相同。

在我的服务器.properties文件中,我有:


zookeeper.connect=localhost:8080

和动物园管理员属性:


clientPort=8080

在应用程序中指定的相同端口。在启动应用程序之前,我运行


.\bin\windows\zookeeper-server-start.bat config\zookeeper.properties


.\bin\windows\kafka-server-start.bat config\server.properties


四季花海
浏览 84回答 1
1回答

茅侃侃

在应用程序.yml 中,您指定了动物园管理员端口,而不是 kafka 代理端口spring:   kafka:     bootstrap-servers: localhost:8080在上面,您应该定义 kafka 代理的端口,即 server.properties 文件的值。port=默认情况下,Spring 启动应用在端口 8080 上运行,因此请不要对 Zookeeper 端口使用相同的端口,除非你已更改了弹簧启动应用的默认端口。所以在服务器属性中,有 和 ,在应用程序.yml中,有如下:port=9092zookeeper.connect=localhost:2181spring:   kafka:     bootstrap-servers: localhost:9092然后在动物园管理员的属性中,有.然后以相同的顺序重新启动动物园管理员,Kafka服务器和弹簧启动应用程序。clientPort=2181更新:较新版本的 Kafka 使用,而不是在服务器属性文件中使用。因此,请尝试替换它。listeners=PLAINTEXT://localhost:9092port=9092
随时随地看视频慕课网APP

相关分类

Java
我要回答