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

何时使用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中,producer将向topic发布消息,topic是特定类型的消息流。消费者将通过拉取数据来订阅经纪人的一个或多个主题。

主要区别:

>

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

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

    在 AcitveMQ 中,生产者向代理发送消息,代理向所有消费者推送消息。制作者有责任确保消息已传递。在 Kafka 中,Consumer 将在自己的时间从代理中提取消息。消费者有责任消费它应该消费的消息。

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

    在Kafka-消费者可以倒退到旧的偏移量并重新消费数据。当您修复了一些问题并决定在问题解决后重新播放旧消息时,这很有用。

    队列和主题的性能可能会随着 ActiveMQ 中更多使用者的增加而降低。但Kafka并没有增加更多消费者的劣势。

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

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

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

    更多细节可以在 notes.stephenholiday.com 阅读

    编辑:这尤其适合那些认为制作人不会等待经纪人确认的人。他们可以阅读ActiveMQ文档页面

    ProducerWindowSize是生产者在等待来自代理的确认消息之前将向代理传输的最大数据字节数,该确认消息表明生产者已经接受了先前发送的消息。

  • 司马高昂
    2023-03-14

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

    Kafka

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

    激活MQ

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

     类似资料:
    • 问题内容: 我对php比较陌生。有一件非常基本的事情困扰着我。我了解php用于使网站动态化。我也了解php是可用于创建动态网站的许多服务器端脚本语言之一。 但是,我不明白的是,何时需要使用index.php页面。例如,如果我的索引页面上只有一个简单的登录页面,那么它也可能只是一个简单的html页面。对?那我为什么要使它成为index.php而不是index.html? 一个示例情况的例子将是很好的

    • 问题内容: 我刚刚开始阅读JPA,并且在休眠中的实现了解了细节。但是,在那之前继续开发,您能否帮助您阐明基本的qn。 何时 使用OneToOne如果实体管理器需要处理相关对象的持久性,则可以使用OneToOne。关键是,我始终可以在不指定oneToOne的情况下生活,但是我有责任管理这种关系并确保所引用的对象不处于过渡状态。这是真的? 何时使用或不使用ManyToOne 假设我正在定义Employ

    • 问题内容: 但是我仍然不知道您何时在工厂使用服务。 据我所知,工厂通常用于创建可被多个控制器调用的“通用”功能:创建通用控制器功能 Angular文档似乎更喜欢工厂而不是服务。他们甚至在使用工厂时也提到“服务”,这更加令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services 那么什么时候可以使用服务呢? 有什

    • 请容忍我在这里。我知道还有其他答案,比如:AngularJS:服务vs提供商vs工厂 然而,我仍然不知道你什么时候会使用工厂服务。 据我所知,factory通常用于创建可由多个控制器调用的“公共”函数:创建公共控制器函数 Angular的医生似乎更喜欢工厂而不是服务。他们甚至在使用工厂时提到“服务”,这更令人困惑!http://docs.angularjs.org/guide/dev_guide.

    • 我想在执行某个函数时关闭引导模式,但当再次打开模式时,我必须双击才能打开它,我想用一键再次打开,而不是双击,谢谢 关闭引导模式(js)的我的代码