我正在评估一个项目的Message Brokers,但是找不到关于Apache Kafka是否支持以下用例的明确答案:
Kafka是否支持此用例,如何实现?如果Kafka无法提供此功能,那么其他Message Broker可以提供哪些功能?
答案 0 :(得分:1)
具有其他属性的邮件,可在接收邮件时进行过滤
您可以使用Kafka Streams或KSQL过滤消息。此操作的输出将成为消费者阅读的新主题。
或者,您可以通过该“ ID”字段执行主题分区,并将其设置为Kafka消息密钥,具体取决于该值的基数。
0到n个消费者从主题中收到这些消息
是的,Kafka可以有N个消费者
邮件在接收时不会被消耗
不清楚这是什么意思。 “消费”和“接收”是一回事。
只要是消费主题的消费者,他们就会收到推送给他们的所有消息
不是将消息“推”给在线消费者,而是poll
版。任何订阅的消费者将看到其主题请求的消息
:当没有消费者从某个主题接收消息时,Message Broker至少更新每个主键的消息内部状态
Kafka没有主键。它有偏移量。如果没有主题使用者,则偏移量将过期,代理将删除消息。邮件内容本身将永远不会被修改
当消费者订阅主题时,它必须能够在开始时接收从每个主键写入的最后一条消息,然后从此开始将所有新消息推送到队列中
设置auto.commit.offset=earliest
将确保您从每个新使用者 group 的起始偏移量开始读取。
:接收者应该能够以某种方式识别出,已收到开始时所有初始状态的消息。
监视此过程非常棘手,因为它取决于客户端,但是它包括检查使用者组的偏移量滞后,而且据我在客户端所见,并不是开箱即用的。不过,您可以从外部运行consumer groups命令来检查延迟。
Confluent Control Center显示了可视消息消耗率,但是消费者协议旨在连续运行,而不是在主题的“结尾”处停止运行
总体而言,如果您期望数据库的主键和快速过滤功能,则可以将Kafka用作通向您选择的数据库的管道,然后从那里进行切片和切块