当前位置: 首页 > 知识库问答 >
问题:

Kafka:Docker容器和NoBrokersAvailable错误

孙凌龙
2023-03-14

我运行Kafka使用:

docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.99.100 --env ADVERTISED_PORT=9092 spotify/kafka

根据https://ngeor.wordpress.com/2017/03/25/kafka-with-docker-a-docker-introduction/-p标志用于发布网络端口。在容器内,ZooKeeper在2181监听,Kafka在9092监听。如果我们不使用-p发布它们,那么它们在容器外部是不可用的,因此我们无法真正使用它们。-–env标志用于设置环境变量。根据spotify/kafka图像的文档,这些都是必需的-最后一部分指定了我们要运行的图像:spotify/kafka

现在,我想向这个Kafka端口发送生产者的消息。从另一个docker容器中:

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092',
                         value_serializer=lambda v: json.dumps(v).encode('utf-8'))

然而,这就产生了一个错误:Kafka。错误。NoBrokersAvailable:NoBrokersAvailable

如何确保两个Docker容器可以通信?

共有1个答案

张啸
2023-03-14

您必须提供运行Kafka服务器的docker容器IP,而不是localhost。

就像

producer=KafkaProducer(bootstrap\u servers=':9092',value\u serializer=lambda v:json.dumps(v)。编码('utf-8'))

 类似资料:
  • 我想做的是,在运行compose up之后,在我的web本地主机中看到一个简单的html文件。但我在localhost的8080 8000 8009端口中看不到任何东西。 当我将yml更改为 上面写着 caner@vegan:~/ideaprojects/combabety$pwd/home/caner/ideaprojects/combabety$ls docker-compose.yml ht

  • 我正在尝试实现EJB命令来通信两个jsf项目。 我创建了一个EAR,其中有我的两个jsf项目+ejb。

  • 我刚接触Spring,我读到BeanFactory也称为基本IOC,ApplicationContext称为高级IOC。 我读到: BeanFactory容器是为DI提供基本支持的最简单的容器,由org.springframework.beans.factory.BeanFactory接口定义。BeanFactory和相关接口,如BeanFactoryAware、InitializingBean、

  • 我想将Spring Boot应用程序作为WAR部署到Tomcat容器,但Tomcat无法启动该容器。我遵循了Spring Boot Reference中的“传统部署”一节。容器的线程大小设置为-xss4068,但我仍然收到堆栈溢出错误。 下面是堆栈跟踪: 我的pom.xml具有以下Spring Boot依赖项,其中spring-boot-starter-tomcat作用域设置为提供,如文档中所述。

  • 在WildFly上部署我的应用程序后,我看到以下消息:

  • 我正在尝试使用微微容器的AOP。 目前为止我在留档中发现:http://picocontainer.codehaus.org/interception.html 然后创建拦截器,但是查看代码,我在任何地方都找不到拦截器属性。 as接收一个Properties值,该值Pico在特性类中实现。 任何人都有线索,或者以前实施过,并且知道如何保持? 谢谢