【问题标题】:what will be better to use apache kafka or activemq?使用 apache kafka 或 activemq 哪个更好?
【发布时间】:2019-09-21 01:39:26
【问题描述】:

问题陈述:

我们将收到处理属于以下任何组的项目的请求 -

  1. Grp1 -> A1,B1,C1,D1,E1
  2. Grp2 -> A2,B2,C2,D2,E2
  3. Grp3 -> A3,B3,C3,D3,E3

场景一:

我们收到 A1、B1、C1 的 3 个请求。 由于所有请求都属于同一组,因此应按顺序处理它们 (当前请求应在处理下一个请求之前完成)

场景 2:

我们收到 A1、A2、B2、B3 的 4 个请求
此处请求 A2 和 B2 属于同一组,因此应按场景 1 中所述顺序处理它们 并且请求 A1 和 B3 应该并行处理,因为它们属于不同的组

所以基本上应该并行处理来自不同组的请求。 来自同一组的请求应按顺序处理。

目前的做法:

我们计划用 Apache Kafka 或 activemq 来做这件事,如下-

  • 创建主题
  • 将主题划分为多个分区,每个分区分配一个 group ,所以分区数将等于组数
  • 属于特定组的每个请求都将发送到分区 分配给该组。
  • 每个分区都有一个专门的消费者来处理请求 仅来自该分区。

问题:

  1. 哪一个最适合 Apache Kafka 或 activemq 的需求?
  2. 还有其他更好的方法来解决同样的问题吗?

注意:给定的应用程序可以是运行多个实例的分布式微服务应用程序。

【问题讨论】:

  • 注意:推荐问题被认为是 Stackoverflow 的题外话,请参阅 help center

标签: apache-kafka activemq


【解决方案1】:

我不知道 ActiveMQ,但你描述的基本上是 Kafka 的工作原理。分区中所有产生的事件都是按顺序排序和处理的,在一个消费者组中,每个分区只能有一个消费者

您需要实现的唯一部分是Partitioner 接口,以保证您的组对逻辑进行分区。否则,默认分区器不会保证 X1 和 Y2 最终成为同一分区的一部分

【讨论】:

  • 感谢您的回复!!您认为除了队列之外还有其他方法可以解决问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2017-12-12
  • 2019-10-06
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多