使用 apache kafka 或 activemq 哪个更好?

Posted

技术标签:

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

问题陈述:

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

    Grp1 -> A1,B1,C1,D1,E1 Grp2 -> A2,B2,C2,D2,E2 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 ,所以分区数将等于组数 属于特定组的每个请求都将发送到分区 分配给该组。 每个分区都有一个专门的消费者来处理请求 仅来自该分区。

问题:

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

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

【问题讨论】:

注意:推荐问题被认为是 *** 的题外话,请参阅 help center 【参考方案1】:

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

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

【讨论】:

感谢您的回复!!您认为除了队列之外还有其他方法可以解决问题吗?

以上是关于使用 apache kafka 或 activemq 哪个更好?的主要内容,如果未能解决你的问题,请参考以下文章

如何监控 Apache Kafka 指标?

rabbitmq使用

如何使用Python以编程方式在Apache Kafka中创建主题

Apache Kafka 中的事件外包

Apache Kafka教程:基础概念

Apache Kafka教程:主题复制