【发布时间】:2018-01-07 23:05:33
【问题描述】:
我有一个 kafka 生产者和消费者。kafka 生产者正在发布到一个主题,并获取数据并完成一些处理。 kafka 消费者正在从另一个主题读取主题 1 的数据处理是否成功,即主题 2 有成功或失败消息。现在我正在启动我的消费者,然后将数据发布到主题 1。我想让生产者和消费者同步,即一旦生产者发布数据,消费者应该读取该数据的成功或失败消息,然后生产者应该继续处理下一组数据。
【问题讨论】:
标签: apache-kafka
我有一个 kafka 生产者和消费者。kafka 生产者正在发布到一个主题,并获取数据并完成一些处理。 kafka 消费者正在从另一个主题读取主题 1 的数据处理是否成功,即主题 2 有成功或失败消息。现在我正在启动我的消费者,然后将数据发布到主题 1。我想让生产者和消费者同步,即一旦生产者发布数据,消费者应该读取该数据的成功或失败消息,然后生产者应该继续处理下一组数据。
【问题讨论】:
标签: apache-kafka
简答:你不能这样做,Kafka 不提供这种支持。
详细回答: 正如 Hans 所解释的,发布/订阅消息传递模型使发布和订阅完全不了解彼此,我相信这就是该模型的强大之处。生产者可以生产而不用担心有没有消费者,消费者可以消费而不用担心有多少生产者。
您可以做的最接近的是,您可以使您的生产者同步。这意味着您可以等到您的消息被代理接收并确认。
如果您想这样做,请在每次发送后刷新。
【讨论】:
Apache Kafka 和发布/订阅消息传递通常旨在通过使用流式异步事件来分离生产者和消费者。您所描述的更像是批处理作业或同步远程过程调用 (RPC),其中生产者和消费者显式耦合在一起。标准的 Apache Kafka 生产者/消费者 API 不支持此消息交换模式,但您始终可以在 Kafka API 之上编写自己的简单包装器,该包装器使用相关 ID、消费 ACK 和请求/响应消息来创建自己的行为接口如你所愿。
【讨论】: