Apache kafka python KafkaConsumer和Producer同时出现

Apache kafka python KafkaConsumer和Producer同时出现,apache-kafka,kafka-consumer-api,kafka-python,Apache Kafka,Kafka Consumer Api,Kafka Python,在python程序中,我想向Kafka写一些消息,然后从远程应用程序读取相同数量的关于不同主题的消息。问题是,当我发送完消息时,另一端已经开始响应,当我开始阅读时,我只收到消息批次的尾部,或者根本没有消息,这取决于时间。这与我对包的理解相矛盾,也就是说,我认为如果我使用auto\u offset\u reset='latest'创建一个消费者,并订阅一个主题,那么它会在订阅时记住该偏移量,当我迭代消费者对象时,它会开始从该偏移量读取消息 以下是我的工作: 我先创建一个消费者,然后订阅out主题:

在python程序中,我想向Kafka写一些消息,然后从远程应用程序读取相同数量的关于不同主题的消息。问题是,当我发送完消息时,另一端已经开始响应,当我开始阅读时,我只收到消息批次的尾部,或者根本没有消息,这取决于时间。这与我对包的理解相矛盾,也就是说,我认为如果我使用
auto\u offset\u reset='latest'
创建一个消费者,并订阅一个主题,那么它会在订阅时记住该偏移量,当我迭代消费者对象时,它会开始从该偏移量读取消息

以下是我的工作:

我先创建一个消费者,然后订阅out主题:

consumer = KafkaConsumer(
  bootstrap_servers=host+':'+broker_port, 
  group_id = "0", 
  auto_offset_reset='latest',
  consumer_timeout_ms=10000
)
consumer.subscribe(topics=(topic_out))
然后创建一个制作人并向主题_发送消息:

producer = KafkaProducer(
   bootstrap_servers=host+':'+broker_port
)
future = producer.send(topic,json.dumps(record).encode('utf-8'))
future.get(timeout=5)
然后我开始从消费者那里读到:

results = []
for msg in consumer:
   message = json.loads(msg.value)
   results.append(message)
我在发送前尝试了consumer.pause(),在发送后尝试了consumer.resume()-没有帮助

配置中是否有我遗漏的东西,或者我误解了消费者的工作方式


提前谢谢

听起来你有比赛条件


一种解决方案是存储一个本地字典或sqlite表,它是通过使用这个“查找主题”构建的,然后当您使用这个“操作主题”时,您是在本地进行查找,而不是启动一个用户在“查找主题”上扫描您需要的数据

在生产商发送数据之前,您的消费者是否已启动并运行?如果我理解正确,你是说消费者没有消费这些消息。如果不清楚,你是说消费者没有消费消息:C和P都在同一个程序中:。我首先实例化一个C,然后是P,然后用P发送消息,然后用以前实例化的C读取消息,然后更改此值
group\u id=“0”
,然后重新启动进程