首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka:生产者如何才能只发送给某个Consumer/GroupId

Kafka:生产者如何才能只发送给某个Consumer/GroupId
EN

Stack Overflow用户
提问于 2018-01-04 15:36:35
回答 4查看 7.6K关注 0票数 0

自从我开始使用Kafka以来,我注意到Kafka正在广播每个消费者或群体的消息。如何让生产者只将消息发送给某个特定的消费者?我说的是一个主题系统谢谢

EN

回答 4

Stack Overflow用户

发布于 2018-01-04 18:01:43

Kafka在消费消息方面的工作方式取决于主题和消费组的分区数量。当消费者是监听相同主题的相同消费者组的一部分时,每个消费者将从一个或多个分区接收消息,但不会收到与其他消费者相同的消息。例如:如果你有一个主题,有4个分区( p1,p2,p3,p4)和3个消费者( c1,c2和c3)在同一个消费者组中,那么在分区分配之后,你可以有:来自p1和p2的c1 receiving,来自p3的c2,来自p4的c3。正如您所看到的,消费者不会收到相同的消息(即c3不会像c1那样接收来自p1和p2的消息)。如果您将消费者分配到不同的消费者组(例如c1到g1,c2到g2和c3到g3)来监听相同的主题(有4个分区),他们将获得所有相同的消息(来自p1,p2,p3,p4的c1,以及c2和c3的相同消息)。因此不同消费者组允许具有发布/订阅机制(广播消息)。如果您希望生产者只向特定的客户发送消息,一种可能的方法是让一个主题的分区数=消费者的数量,然后不使用消费者组,而是直接分配,这样消费者就可以请求从特定分区获取消息(即c1只想要来自p1的消息)。在这种情况下,生产者需要向该分区发送消息,但是...默认分区程序(即循环)不会发生这种情况。您应该根据目的地消费者编写自己的分区程序,以便将消息发送到正确的分区(因此,如果您知道消息"m“应该发送到c1,那么您应该有一个分区程序逻辑,它能够从消息"m”中获取信息,对其进行处理,并将p1作为目的地,即c1侦听分区)。另一个简单的解决方案可能是有一个主题--每个消费者一个分区。你可以用不同的方式做到这一点,但一般来说,Kafka是不会在你没有任何工作的情况下做到这一点的。

票数 8
EN

Stack Overflow用户

发布于 2020-05-06 23:01:37

consumers"

  • publish

  • create“带有关键字或发布消息到特定分区并使用相同数量的消息的partitions=number数。

这样你就可以实现你想要的东西。

票数 1
EN

Stack Overflow用户

发布于 2018-01-05 04:14:44

每个消费者都选择从给定的主题中提取消息。如果您不希望使用者接收来自给定主题的消息,则只需将其配置为不从该主题中提取。

如果您想要过滤一个主题,以生成一个只包含特定消息的主题,以便只使用这些消息,则可以使用Kafka StreamsKSQL来完成此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48090697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档