使用 apache kafka 或 activemq 哪个更好?
what will be better to use apache kafka or activemq?
问题陈述:
我们将收到处理属于以下任何组的项目的请求 -
- Grp1 -> A1,B1,C1,D1,E1
- Grp2 -> A2,B2,C2,D2,E2
- Grp3 -> A3,B3,C3,D3,E3
场景 1:
我们收到了 A1、B1、C1 的 3 个请求。
由于所有请求都属于同一组,因此应按顺序处理
(当前请求应该在下一个请求被处理之前完成)
场景 2:
我们收到了 A1、A2、B2、B3 的 4 个请求
此处请求 A2 和 B2 属于同一组,因此应按场景 1 中所述顺序处理它们
并且请求 A1 和 B3 应该并行处理,因为它们属于不同的组
所以基本上来自不同组的请求应该并行处理。
同组请求按顺序处理
当前方法:
我们计划使用 Apache Kafka 或 activemq 执行此操作,如下所示-
- 创建主题
- 将主题划分为分区,每个分区将分配一个分区
组,所以分区数将等于组数
- 属于特定组的每个请求都将发送到分区
分配给该组。
- 每个分区都有一个专门的消费者来处理请求
仅来自该分区。
问题:
- Apache Kafka 或 activemq 哪个最适合要求?
- 还有其他更好的方法来解决同样的问题吗?
注意:给定的应用程序可以是具有多个实例的分布式微服务应用程序运行。
我不知道ActiveMQ,但你描述的基本上是Kafka的工作原理。一个分区中所有产生的事件都按顺序排序和处理,在一个消费者组中,每个分区只能有一个消费者
您唯一需要实现的部分是 Partitioner
接口,以保证您的组分区逻辑。否则,默认分区程序将无法保证 X1 和 Y2 最终成为同一分区的一部分
问题陈述:
我们将收到处理属于以下任何组的项目的请求 -
- Grp1 -> A1,B1,C1,D1,E1
- Grp2 -> A2,B2,C2,D2,E2
- Grp3 -> A3,B3,C3,D3,E3
场景 1:
我们收到了 A1、B1、C1 的 3 个请求。 由于所有请求都属于同一组,因此应按顺序处理 (当前请求应该在下一个请求被处理之前完成)
场景 2:
我们收到了 A1、A2、B2、B3 的 4 个请求
此处请求 A2 和 B2 属于同一组,因此应按场景 1 中所述顺序处理它们
并且请求 A1 和 B3 应该并行处理,因为它们属于不同的组
所以基本上来自不同组的请求应该并行处理。 同组请求按顺序处理
当前方法:
我们计划使用 Apache Kafka 或 activemq 执行此操作,如下所示-
- 创建主题
- 将主题划分为分区,每个分区将分配一个分区 组,所以分区数将等于组数
- 属于特定组的每个请求都将发送到分区 分配给该组。
- 每个分区都有一个专门的消费者来处理请求 仅来自该分区。
问题:
- Apache Kafka 或 activemq 哪个最适合要求?
- 还有其他更好的方法来解决同样的问题吗?
注意:给定的应用程序可以是具有多个实例的分布式微服务应用程序运行。
我不知道ActiveMQ,但你描述的基本上是Kafka的工作原理。一个分区中所有产生的事件都按顺序排序和处理,在一个消费者组中,每个分区只能有一个消费者
您唯一需要实现的部分是 Partitioner
接口,以保证您的组分区逻辑。否则,默认分区程序将无法保证 X1 和 Y2 最终成为同一分区的一部分