无法向Kafka Python中的主题发送消息

无法向Kafka Python中的主题发送消息,python,apache-kafka,kafka-python,Python,Apache Kafka,Kafka Python,我有一个生产者代码,在那里我向卡夫卡发送消息。直到昨天我还可以发短信。从今天起,我无法发送消息。不确定其版本是否兼容问题。没有任何失败或错误消息,代码会被执行,但不会发送消息 下面是python模块版本, kafka-python==2.0.1 Python 3.8.2 下面是我的代码 from kafka import KafkaProducer import logging logging.basicConfig(level=logging.INFO) producer = KafkaPr

我有一个生产者代码,在那里我向卡夫卡发送消息。直到昨天我还可以发短信。从今天起,我无法发送消息。不确定其版本是否兼容问题。没有任何失败或错误消息,代码会被执行,但不会发送消息

下面是python模块版本,
kafka-python==2.0.1

Python 3.8.2

下面是我的代码

from kafka import KafkaProducer
import logging
logging.basicConfig(level=logging.INFO)

producer = KafkaProducer(bootstrap_servers='127.0.0.1:9092')
producer.send('Jim_Topic', b'Message from PyCharm')
producer.send('Jim_Topic', key=b'message-two', value=b'This is Kafka-Python')
任何建议都会有帮助

我也试着记录下行为,但不知道为什么制片人会关门

INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=127.0.0.1:9092 <connecting> [IPv4 ('127.0.0.1', 9092)]>: connecting to 127.0.0.1:9092 [('127.0.0.1', 9092) IPv4]
INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=127.0.0.1:9092 <connecting> [IPv4 ('127.0.0.1', 9092)]>: Connection complete.
INFO:kafka.producer.kafka:Closing the Kafka producer with 0 secs timeout.
INFO:kafka.producer.kafka:Proceeding to force close the producer since pending requests could not be completed within timeout 0.
INFO:kafka.producer.kafka:Kafka producer closed

Process finished with exit code 0
INFO:kafka.conn::连接到127.0.0.1:9092[('127.0.0.1',9092)IPv4]
信息:kafka.conn::连接已完成。
信息:kafka.producer.kafka:以0秒超时关闭kafka制作者。
信息:kafka.producer.kafka:继续强制关闭生产者,因为挂起的请求无法在超时0内完成。
信息:卡夫卡。制片人。卡夫卡:卡夫卡制片人关闭
进程已完成,退出代码为0

您能试试下面的代码吗。我从kafka python文档中获取了它,并在本地kafka实例上进行了尝试

from kafka import KafkaProducer
import json
def on_send_success(record_metadata):
    print(record_metadata.topic)
    print(record_metadata.partition)
    print(record_metadata.offset)


def on_send_error(excp):
    log.error('I am an errback', exc_info=excp)


if __name__ == "__main__":
    target_topic = "Jim_Topic"
    producer = KafkaProducer(bootstrap_servers=['127.0.0.1:9092'],retries=5, key_serializer=lambda x: json.dumps(x).encode("ascii"), value_serializer=lambda x: json.dumps(x).encode("ascii"))
    messages = [{key:"message_one",value:"Message from PyCharm"},{key:"message_two",value:"This is Kafka-Python"}]
    for msg in messages:
      producer.send(target_topic,msg).add_callback(on_send_success).add_errback(on_send_error)

    producer.flush(timeout=10) # this forcibly sends any messages that are stuck.
    producer.close(timeout=5)

最后添加
producer.flush()
,帮助我解决了问题。在实际提交事务之前,将刷新(传递)任何未完成的消息

from kafka import KafkaProducer
import logging
logging.basicConfig(level=logging.INFO)

producer = KafkaProducer(bootstrap_servers='127.0.0.1:9092')
producer.send('Jim_Topic', b'Message from PyCharm')
producer.send('Jim_Topic', key=b'message-two', value=b'This is Kafka-Python')
producer.flush()

如果这是卡夫卡的本地安装,你能试着写一个单独的主题吗。也按原样发送字符串,不要将其转换为二进制字符串。我这样做了。我能够从卡夫卡制作者控制台向卡夫卡消费者控制台发送消息。但是我不能通过pythonNo做同样的事情我的意思是尝试用相同的代码将消息发送到一个单独的主题我也尝试过,创建了一个新的主题
Kafka\u RND
,仍然无法发送消息你的整个代码?如果没有,可以共享剩余部分,但仍保持不变。消息未发送sentI更改了发送Json消息的代码,现在可以检查吗?