当前位置: 首页 > 知识库问答 >
问题:

Apache kafka与ActiveMQ有什么区别

严曜文
2023-03-14

我正在研究Apache Kafka。我想知道哪一个更好:Kafka或ActiveMQ。这两种技术的主要区别是什么?我想在Spring MVC中实现Kafka。

共有3个答案

柏夕
2023-03-14

我每周都听到这个问题。。。虽然ActiveMQ(与IBM MQ或JMS一般一样)用于传统消息传递,但Apache Kafka用作流平台(消息传递分布式存储数据处理)。两者都是为不同的用例构建的。

您可以将Kafka用于“传统消息传递”,但不能将MQ用于Kafka特定的场景。

文章“Apache Kafka vs.Enterprise Service Bus(ESB)-朋友、敌人还是朋友(https://www.confluent.io/blog/apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/)“讨论为什么Kafka不是竞争对手,而是对集成和消息传递解决方案(包括ActiveMQ)的补充,以及如何将两者集成。

曹新觉
2023-03-14

Kafka体系结构不同于ActiveMQ。

在Kafka中,生产者将消息发布到主题,主题是特定类型的消息流。消费者将通过拉取数据订阅经纪人的一个或多个主题。

关键区别:

>

  • ActiveMQ Broker必须维护每条消息的传递状态,从而降低吞吐量。与ActiveMQ不同,Kafka生产者不等待代理的确认,并且以代理可以处理的速度发送消息。如果代理可以像生产者一样快地处理消息,则总体吞吐量将很高。

    Kafka有一种更高效的存储格式。平均而言,Kafka中每条消息的开销为9字节,而ActiveMQ中为144字节。

    在AcitveMQ中,生产者向经纪人发送消息,经纪人向所有消费者推送消息。生产者有责任确保消息已被传递。在Kafka中,消费者将在自己的时间从经纪人那里拉取消息。消费者有责任消费它应该消费的消息。

    AMQ中的慢消费者可能会导致非持久主题的问题,因为它们可以迫使代理将旧消息保留在RAM中,一旦它填满,就会迫使代理减慢生产者的速度,从而导致快速消费者减慢速度。Kakfa中的慢消费者不会影响其他消费者。

    在Kafka中,消费者可以回放到旧的偏移量并重新使用数据。当您修复一些问题并决定在问题解决后重新播放旧消息时,此功能非常有用。

    队列和主题的性能可能会随着ActiveMQ中增加更多消费者而降低。但是Kafka并没有因为增加更多消费者而失去优势。

    由于分区的复制,Kafka具有高度可扩展性。它可以确保在分区中按顺序传递消息。

    ActiveMQ是传统的消息传递系统,Kakfa适用于具有大量数据的分布式处理系统,对流处理有效

    由于上述效率,Kafka吞吐量高于ActiveMQ和RabbitMQ等普通消息传递系统。

    更多详细信息请参见备注。斯蒂芬·霍利迪。通用域名格式

    编辑:这特别适合那些认为制作人不需要等待经纪人确认就可以阅读ActiveMQ文档页面的人

    ProducerWindowSize是生产者在等待来自代理的确认消息(它已接受以前发送的消息)之前将传输给代理的最大数据字节数。

  • 巫健柏
    2023-03-14

    Kafka和ActiveMQ可能有一些重叠,但它们最初是为不同的目的而设计的。所以比较它们就像比较苹果和桔子一样。

    Kafka

    Kafka是一个分布式流媒体平台,具有很好的水平扩展能力。它允许应用程序处理和重新处理磁盘上的流数据。由于其高吞吐量,通常用于实时数据流。

    ActiveMQ

    ActiveMQ是一个通用消息代理,支持AMQP、STOMP、MQTT等多种消息传递协议。它支持更复杂的消息路由模式以及企业集成模式。一般来说,它主要用于应用程序/服务之间的集成,尤其是在面向服务的架构中。

     类似资料:
    • 我已经在kafka上工作了相当长的六个月,我对用户延迟和存储到主题分区中的数据有一些疑问。 问题1:最初,当我开始阅读Kafka并了解如何使用Kafka的功能时,我被教导说,一个只有一部分和一个复制因子的主题会创造奇迹。经过相当长的六个月的工作,将我的项目迁移到live之后,使用我的主题消息的消费者开始给我一个延迟。我阅读了许多关于消费者延迟的堆栈溢出答案,得出结论,如果我增加某个主题的分区和复制

    • 本文向大家介绍Mock 与 Stub 有什么区别?相关面试题,主要包含被问及Mock 与 Stub 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 Stub 一个有助于运行测试的虚拟对象。 在某些可以硬编码的条件下提供固定的行为。 从未测试stub的所有其他行为。 例如,对于空栈,你可以创建一个对于 empty() 方法只返回 true 的 stub。因此这并不关心栈中是否存在元素。 模拟

    • 本文向大家介绍innerHTML与outerHTML有什么区别?相关面试题,主要包含被问及innerHTML与outerHTML有什么区别?时的应答技巧和注意事项,需要的朋友参考一下

    • 问题内容: 所以我一直在听很多关于meteor.js的文章。这些教程使它看起来像框架一样非常运动,但是对于Web编程,我还是一个新手。 在过去的一个半月中,我一直在尝试真正地学习node.js并弄清楚它们是如何结合在一起的。我喜欢启动和运行它的速度和便捷程度,以及它所伴随的社区(这可以从Node的大量框架中得到体现)。 但是流星呢?它的真正优势是什么,有什么区别?有没有人以node.js用户身份开

    • 本文向大家介绍Kotlin与Scala有什么区别,包括了Kotlin与Scala有什么区别的使用技巧和注意事项,需要的朋友参考一下 Scala比Kotlin更好吗?不...,Kotlin胜过Scala吗?没有... 两种编程语言都有其自身的优势,并且可以用于一组特定的开发。只是有些开发人员认为Java不足以开发他们设计Kotlin的应用程序,而其他开发人员则认为Java库在他们设计Scala时无法

    • 本文向大家介绍Scala与Java有什么区别?,包括了Scala与Java有什么区别?的使用技巧和注意事项,需要的朋友参考一下 Scala编程有点复杂,它的某些功能很难学习。对于程序员来说,Scala是Java的不错的升级,让我们看看Scala可以做什么?Scala是一种面向对象的编程语言,并且还集成了功能编程语言的功能。那么,让我们看看scala与Java有何不同? Scala和Java之间的区