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

使用脚本时,我无法向Kafka生成数据,但我可以列出脚本中的主题

轩辕佑运
2023-03-14

各位,局域网中有一个虚拟服务器,ip是192.168.18.230,我的机器ip是192.168.0.175。今天,我尝试使用我的机器(192.168.0.175)向我的虚拟服务器(192.168.18.230)发送一些消息,使用Kafka控制台生成器

$ bin/kafka-console-producer.sh --broker-list 192.168.18.230:9092 --topic test

但有点不对劲。问题描述如下:

[2017-04-10 17:25:40,396] ERROR Error when sending message to topic test with key: null, value: 6 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0 due to 1568 ms has passed since batch creation plus linger time

但当我使用kafka topics脚本列出主题时,它是有效的:

$ bin/kafka-topics.sh --list --zookeeper 192.168.18.230:2181

这个问题困扰了我很长一段时间,有人能帮我解决吗?

共有2个答案

姜博
2023-03-14

您的Kafka producer可能正在无法访问运行Kafka代理的虚拟机的计算机上运行。

此外,代理端口不仅应该是开放的,而且必须由代理负责,也就是说,您的Kafka代理的(公布的)侦听器必须具有您的虚拟机IP(可以从您的Kafka制作者运行的位置访问IP,因为一个VM可以有多个IP,并且没有规则规定所有IP都可以访问)。

例如,你的虚拟机有两个IP1.2.3.44.3.2.1,而你在另一台机器上的制作人指向1.2.3.4,你必须首先能够ping和telnet到这个IP。

接下来,你必须在你的Kafka经纪人的广告听众中有这个IP1.2.3.4

advertised.listeners=PLAINTEXT://1.2.3.4:9092

您应该在Kafka Producer中将此IP设置为您的bootstrap.servers

您还应该确保端口不仅对localhost127.0.0.1开放,例如,当您使用netstat时,它不应该只有localhost:9092127.0.0.1:9092,它应该使用任何本地地址0.0.0.0或您的IP1.2.3.4:9092

羿季
2023-03-14

如果你有一个zookeeper实例正在运行,你当然可以询问主题列表。然而,你似乎没有Kafka经纪人。

你可能有一个动物园管理员在跑步,但Kafka没有。

 类似资料:
  • 问题内容: 我有一个.dacpac文件,MSBuild正在调用该文件,并将其发布到QA数据库进行测试。此发布失败,我从他们那里找回来的错误是一条通用的“发生错误”消息。我希望我可以从dacpac生成部署脚本,并逐步浏览该脚本以查看问题发生的位置,并希望教他们如何执行此操作。 有什么方法可以将dacpac指向特定的数据库,并使其生成用于更新数据库的sql,而无需实际发布到数据库? 问题答案: 您可以

  • 问题内容: 它在Windows 7(64位),带有Win32 Extensions for Python的Python 2.6上运行。 我有一个简单的脚本,仅打印“ hello world”。我可以用启动它。在这种情况下,我可以将输出重定向到文件。但是,如果我仅通过在命令行上键入并重定向输出来运行它,就会出现异常。 我想我是在升级到Windows 7后首先得到此错误的。我记得它应该在XP中工作。我

  • 问题内容: 我已经编辑了package.json以自定义“开始”脚本,因此它将–debug标志添加到节点: 有没有一种方法可以添加新脚本,例如调试脚本,该脚本可以执行我自定义的“开始”现在正在执行的操作? 我希望能够执行: 问题答案: 在您的package.json中定义脚本 然后您可以使用npm的运行脚本 或更短的版本

  • 在你完成模型后,你可以保存模型表结构、视图或外键成一个脚本文件。导出 SQL 功能为脚本生成一个 SQL 文件。选择 工具 -> 导出 SQL。 导出 SQL 的常规设置 文件 设置输出的文件名和位置。 对象 在现有的模型中选择你想导出的对象。 导出 SQL 的高级设置 下列选项是根据你所选择图表的数据库类型:MySQL、Oracle、PostgreSQL、SQLite、SQL Server 和

  • 问题内容: 是否可以使用BeautifulSoup从HTML中删除脚本标签及其所有内容,还是必须使用正则表达式或其他内容? 问题答案:

  • 问题内容: 我正在使用David Walsh(http://davidwalsh.name/backup-mysql-database- php )的数据库备份脚本将MYSQL数据库作为.sql文件备份到服务器。 我创建了一个名为backup的用户,并为其赋予了所有特权(只是为了确保)。然后,我将代码放入php文件中,并设置cron作业以运行php文件。 这是代码: 在执行cron作业时,备份无法