有没有办法让服务 A 处理数据消息并将其发布回同一主题,然后服务 B 来使用它?

问题描述 投票:0回答:1

我们刚刚开始使用 Kafka,我刚刚开始了解 Kafka 的不同功能。 我们有一个要求,通过 Kafka 主题发送的事件需要被一个服务(例如服务 A)使用。服务 A 向该事件发送一些数据消息并将其发布回 Kafka 主题。然后它需要被服务 B 等使用。 因此,这可以通过为服务 A、B 和 C 使用不同的主题来实现。但我想知道是否有更有效的方法来做到这一点,使用 Kafka 的一些功能(我不太确定)。 有没有一种方法可以让服务 A 处理数据消息并将其发布回同一主题,然后服务 B 来使用它。那么基本上有没有一种方法可以让服务按顺序消费kafka消息呢? 事件溯源是实现这一点的一种方法吗? 预先感谢您!

我尝试为每项服务制定单独的主题。我想知道我们是否有更有效的方法来实现这一点。

apache-kafka pipeline event-sourcing
1个回答
0
投票

将其发布回同一主题

不要这样做,它会造成无限循环……Kafka 可以处理数十万个主题,因此只需创建一个新主题即可。这就是它的设计方式,因此没有更有效的方法。否则,听起来你应该使用 Kafka Streams 或 ksqlDB

如果我们必须为每个微服务创建 4 个主题, 在这里使用 Kafka 有什么真正的优势吗?我觉得,我们还可以使用任何消息传递点对点接口。

  1. 您的应用程序可以创建自己的主题。主题不需要提前创建。事实上,我提到的两个选项都会创建“更多”“内部”主题。 Kafka 已被记录为可处理数十万个主题和分区;它们很便宜。

  2. (请说我有偏见),但是像 HTTP / gRPC 这样的 p2p 消息传递可能会因跳过/丢失记录而导致数据丢失。虽然运行任何消息代理集群都需要权衡成本,但您还需要设置负载均衡器,并确保 p2p 设计中所有“点”的接收端具有高可用性。 Kafka 是一种分布式事务日志,而不仅仅是一个消息队列,例如 Redis 或 AWS SQS,这意味着您可以出于多种目的重新处理数据。
© www.soinside.com 2019 - 2024. All rights reserved.