繁体   English   中英

Kafka 主题作为聊天室标识符

[英]Kafka topics as chatroom identifiers

我对可以使用不同聊天室的消息聊天应用程序感兴趣。 我试图从 Kafka 概念的角度了解 Kafka 主题是否可以用作聊天室标识符?

由于聊天室通常是在运行时创建的,因此这意味着

  • Kafka 主题应该在运行时创建。 可能吗?
  • 用户应该能够在创建新主题(聊天室)后立即订阅它们。 可能吗?
  • 会有很多聊天室。 Kafka 拥有大量主题是坏事还是好事?

Kafka 主题应该在运行时创建。 可能吗?

是的。 Kafka AdminClient为管理功能提供了一个编程 API,包括列出、创建和删除主题。

我们可以使用createTopics创建新主题:

Properties props = new Properties();
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
AdminClient admin = AdminClient.create(props);


CreateTopicsResult newTopic = admin.createTopics(Collection.singletonList(new NewTopic(TOPIC_NAME, NUM_PARTITIONS, REP_FACTOR)));

admin.close(Duration.ofSeconds(30));

上述代码来自 Kafka:权威指南第 2 版,第 5 章以编程方式管理 Apache Kafka,其中讨论了很多关于 AdminClient 的内容。

对于 spring-kafka, KafkaAdmin提供了createOrModifyTopics()方法。

用户应该能够在创建新主题(聊天室)后立即订阅它们。 可能吗?

是的。 我们可以在.subscribe()中使用正则表达式:

该表达式可以匹配多个主题名称,如果有人创建了一个名称匹配的新主题,则几乎会立即发生重新平衡,消费者将开始从新主题中消费。

例如,要订阅所有测试主题,我们可以调用

consumer.subscribe(Pattern.compile("test.*"));

会有很多聊天室。 Kafka 拥有大量主题是坏事还是好事?

没关系:我可以在 Kafka 集群中拥有成千上万个主题吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM