使用apache kafka或activemq有什么更好的选择?

时间:2019-05-02 13:53:59

标签: apache-kafka activemq

问题陈述:

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

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

方案1:

我们收到3个有关A1,B1,C1的请求。 由于所有请求都属于同一组,因此应按顺序处理 (当前请求必须先完成,然后才能提取下一个请求进行处理)

方案2:

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

因此,基本上,应并行处理来自不同组的请求。 并且来自同一组的请求应按顺序处理。

当前方法:

我们计划如下使用Apache Kafka或activemq做到这一点

  • 创建主题
  • 将主题划分为多个分区,每个分区将分配一个分区 组,因此分区数将等于组数
  • 每个属于特定组的请求将被发送到分区 分配给该组的人。
  • 每个分区都有一个专用使用者,该使用者将处理请求 仅来自该分区。

问题:

  1. 哪种服务器最适合Apache Kafka或activemq?
  2. 还有其他更好的方法来解决相同的问题吗?

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

1 个答案:

答案 0 :(得分:0)

我不知道ActiveMQ,但是您所描述的基本上是Kafka的工作方式。分区中所有产生的事件都是有序的,并按照该顺序进行处理,并且在使用者组中,每个分区只能有一个使用者

您唯一需要实现的部分是Partitioner接口,以确保您的组到分区逻辑。否则,默认分区程序将无法保证X1和Y2会成为同一分区的一部分