apache-kafka - 针对多个主题拥有标准化的 Kafka Producer 微服务是一种反模式吗?

标签 apache-kafka

我想要实现一个 Kafka GraphQL 微服务,它可以生成多个主题。该微服务将作为其他微服务可以轻松向其发送消息的服务。对此生产者微服务的每个请求都将包含它想要发布到的主题以及与该主题关联的有效负载。在我看来,这是一种比让每个想要发布到主题的服务都拥有 kafka 库代码和与能够生成主题相关的任何其他样板代码更简化的方法。所有特定于 Kafka 的逻辑都将驻留在生产者服务中,从而减少跨服务的重复代码量。

最佳答案

根本不是反模式。 Producer 也是线程安全的。

Confluence 的 Kafka REST 代理已经通过向端点提供一组分区+记录对象来做到这一点

POST/clusters/{cluster_id}/topics/{topic_name}/records

文档 - https://docs.confluent.io/platform/current/kafka-rest/api.html#records-v3


但是,根据您的用例,我建议使用已针对您想要生成的特定事件(而不是用户提供的)硬编码的主题来实现 GraphQL 解析器。换句话说,防止不良行为者用随机数据填充任何随机主题。


In my mind this is a more streamlined approach than having every service that wants to publish to a topic have kafka library code and any other boilerplate code associated with being able to produce to a topic

该“样板”本身可以是一个外部库,例如 Autowiring 的 Spring-Kafka Bean

关于apache-kafka - 针对多个主题拥有标准化的 Kafka Producer 微服务是一种反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73903557/

相关文章:

java - 简单的 Kafka 消费者示例无法通过 java api 工作

apache-kafka - KTable 状态存储无限保留

rabbitmq - 智能代理与哑代理(Kafka 和 RabbitMQ)

java - 无法从 Bluemix Liberty 连接到 BlueMix MessageHub

java - Kafka Streams 是否有处理时间的超时?

apache-kafka - Kafka Streams - 所有实例本地存储指向同一主题

java - 所有分区的 seekToEnd 并在 Kafka 消费者的自动重新平衡中幸存下来

apache-kafka - Kafka Streams 聚合阶段是否序列化和反序列化每个单个元素?

使用 appication.yml/properties 具有不同属性配置的 Spring Boot Kafka 多个消费者

docker - Docker,Kafka-复制在远程代理之间不起作用