为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2022-09-14 15:34:41
我正在尝试运行一个简单的弹簧启动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:8080app:  topic:    foo: foo.tlogging:  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
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

应用程序.yml 中,您指定了动物园管理员端口,而不是 kafka 代理端口

spring:
  kafka:
    bootstrap-servers: localhost:8080

在上面,您应该定义 kafka 代理的端口,即 server.properties 文件的值。port=

默认情况下,Spring 启动应用在端口 8080 上运行,因此请不要对 Zookeeper 端口使用相同的端口,除非你已更改了弹簧启动应用的默认端口。

所以在服务器属性中,有 和 ,在应用程序.yml中,有如下:port=9092zookeeper.connect=localhost:2181

spring:
  kafka:
    bootstrap-servers: localhost:9092

然后在动物园管理员的属性中,有.然后以相同的顺序重新启动动物园管理员,Kafka服务器和弹簧启动应用程序。clientPort=2181

更新:

较新版本的 Kafka 使用,而不是在服务器属性文件中使用。因此,请尝试替换它。listeners=PLAINTEXT://localhost:9092port=9092


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信