【已解决】kafka使用遇到的坑

1. kafka使用文档

2. 在kafka启动zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties

遇到问题:

[2020-08-06 11:22:05,915] ERROR Unexpected exception, exiting abnormally (org.apache.zookeeper.server.ZooKeeperServerMain)
java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
        at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:687)
        at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:143)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:106)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)

解决方式:
输入命令

sudo lsof -i :2181

得到:

COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java      413 zhangjingyi   52u  IPv6 0xbf7b177b8ddf25db      0t0  TCP localhost:55070->localhost:eforward (ESTABLISHED)
java    64540 zhangjingyi  125u  IPv6 0xbf7b177b8ddf035b      0t0  TCP *:eforward (LISTEN)
java    64540 zhangjingyi  129u  IPv6 0xbf7b177b8ddf2b9b      0t0  TCP localhost:eforward->localhost:55070 (ESTABLISHED)
java    64540 zhangjingyi  130u  IPv6 0xbf7b177b8ddf0edb      0t0  TCP localhost:eforward->localhost:55151 (ESTABLISHED)
java    64931 zhangjingyi  122u  IPv6 0xbf7b177b8ddf1a5b      0t0  TCP localhost:55151->localhost:eforward (ESTABLISHED)

解决方式:

kill -9 64540

3. 运行kafka

./bin/kafka-server-start.sh config/server.properties 

遇到问题

ERROR [KafkaServer id=0] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.apache.kafka.common.KafkaException: Socket server failed to bind to 0.0.0.0:9092: Address already in use.
	at kafka.network.Acceptor.openServerSocket(SocketServer.scala:605)
	at kafka.network.Acceptor.<init>(SocketServer.scala:481)
	at kafka.network.SocketServer.createAcceptor(SocketServer.scala:244)
	at kafka.network.SocketServer.$anonfun$createDataPlaneAcceptorsAndProcessors$1(SocketServer.scala:213)
	at kafka.network.SocketServer.$anonfun$createDataPlaneAcceptorsAndProcessors$1$adapted(SocketServer.scala:211)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
	at kafka.network.SocketServer.createDataPlaneAcceptorsAndProcessors(SocketServer.scala:211)
	at kafka.network.SocketServer.startup(SocketServer.scala:122)
	at kafka.server.KafkaServer.startup(KafkaServer.scala:266)
	at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
	at kafka.Kafka$.main(Kafka.scala:82)
	at kafka.Kafka.main(Kafka.scala)
Caused by: java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
	at kafka.network.Acceptor.openServerSocket(SocketServer.scala:601)
	... 13 more

输入命令

lsof -n -i :9092 | grep LISTEN

得到

java    64931 zhangjingyi  127u  IPv6 0xbf7b177b8ddf201b      0t0  TCP *:XmlIpcRegSvc (LISTEN)

解决方式:

kill -9 64931

4. 再启动kafka

./bin/kafka-server-start.sh config/server.properties 

遇到问题

Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-08-06 11:42:41,445] WARN [Controller id=0, targetBrokerId=0] Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-08-06 11:42:41,557] WARN [Controller id=0, targetBrokerId=0] Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-08-06 11:42:41,663] WARN [Controller id=0, targetBrokerId=0] Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-08-06 11:42:41,770] WARN [Controller id=0, targetBrokerId=0] Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-08-06 11:42:41,878] WARN [Controller id=0, targetBrokerId=0] Connection to node 0 (bogon/192.168.124.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

修改 server.properties
添加配置:

listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092

在这里插入图片描述

  1. 再启动kafka
./bin/kafka-server-start.sh config/server.properties 

started运行成功

[2020-08-06 11:51:07,209] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kafka的Spring Boot集成是通过Spring Kafka项目实现的。要在Spring Boot中使用Kafka,首先需要在项目的pom.xml文件中引入spring-kafka依赖。你可以在pom.xml文件中添加以下代码来引入该依赖: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 接下来,你需要在应用程序的配置文件中配置Kafka的相关属性。你可以参考官方文档或其他教程来学习如何配置Kafka的属性。 当你完成了依赖和配置的设置后,就可以在你的Spring Boot应用程序中使用Kafka了。你可以使用注解`@KafkaListener`来监听指定的topic,并在消费消息时执行相应的操作。在`@KafkaListener`注解中,你可以通过设置`topics`属性来指定要监听的topic的名称。在监听方法中,你可以使用`ConsumerRecord`对象来获取消息内容,通过注解`@Header(KafkaHeaders.RECEIVED_TOPIC)`来获取topic的名称,使用`Acknowledgment`对象来手动确认消息已被消费。 下面是一个简单的使用Spring Boot和Kafka的示例代码: ```java @KafkaListener(topics = "my_topic_name") public void onMessage(ConsumerRecord<?, ?> record, Acknowledgment ack, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { log.info("消费消息: " + record.topic() + " ---- " + record.partition() + " ---- " + record.value()); System.out.println(JSON.parseObject(record.value().toString(), KafkaEvent.class)); ack.acknowledge(); } ``` 以上代码中,`@KafkaListener`注解指定了要监听的topic为"my_topic_name"。在`onMessage`方法中,通过`ConsumerRecord`对象获取消息内容,并通过`log`和`System.out.println`打印消息内容。最后,使用`ack.acknowledge()`方法手动确认消息已被消费。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值