Kafka 通过微服务,订阅不存在的主题
Kafka through microservices, subscribe to non exists topics
我有一个系统构建了多个微服务(java spring 引导),通过 grpc 和 avro 消息进行通信。它使用 Kafka 队列。
我的问题是:服务是按顺序建立的,我的一个服务订阅了 Kafka 的主题,然后另一个服务发送消息并创建它。我没有返回任何错误,所以它看起来像工作,但不是。该主题当时不存在,当它获取消息时,消费者服务不会注意到它。如果我重新启动客户端服务,它可以加入主题并正常工作。
我想解决消费者可以创建订阅的主题,或者如果没有收到任何消息则尝试重新连接。
是的,我也看到了这个问题。出于这个原因和其他原因,我们提出的/最简单的解决方案是将创建主题与微服务的部署结合起来。 (长话短说:我们在 CI/CD 框上调用 kafka-topics.sh
,针对适当的 Zookeeper 和代理)
如果您的微服务部署脚本知道要创建哪些主题,并确保它们在应用程序启动之前创建,那么问题就可以避免。
我有一个系统构建了多个微服务(java spring 引导),通过 grpc 和 avro 消息进行通信。它使用 Kafka 队列。 我的问题是:服务是按顺序建立的,我的一个服务订阅了 Kafka 的主题,然后另一个服务发送消息并创建它。我没有返回任何错误,所以它看起来像工作,但不是。该主题当时不存在,当它获取消息时,消费者服务不会注意到它。如果我重新启动客户端服务,它可以加入主题并正常工作。 我想解决消费者可以创建订阅的主题,或者如果没有收到任何消息则尝试重新连接。
是的,我也看到了这个问题。出于这个原因和其他原因,我们提出的/最简单的解决方案是将创建主题与微服务的部署结合起来。 (长话短说:我们在 CI/CD 框上调用 kafka-topics.sh
,针对适当的 Zookeeper 和代理)
如果您的微服务部署脚本知道要创建哪些主题,并确保它们在应用程序启动之前创建,那么问题就可以避免。