我正在尝试运行一个简单的弹簧启动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=9092
zookeeper.connect=localhost:2181
spring: kafka: bootstrap-servers: localhost:9092
然后在动物园管理员的属性中,有.然后以相同的顺序重新启动动物园管理员,Kafka服务器和弹簧启动应用程序。clientPort=2181
更新:
较新版本的 Kafka 使用,而不是在服务器属性文件中使用。因此,请尝试替换它。listeners=PLAINTEXT://localhost:9092
port=9092
添加回答
举报
0/150
提交
取消