【问题标题】:Is Apache Kafka another API for JMS?Apache Kafka 是 JMS 的另一个 API 吗?
【发布时间】:2015-08-07 20:26:46
【问题描述】:

Apache Kafka 不是JMS 的另一个实现吗?

我在我的应用程序中使用JMS+AMQ,并迁移到Apache Kafka。我必须更改所有JMS 代码吗?

【问题讨论】:

    标签: migration apache-kafka jms


    【解决方案1】:

    不,Kafka 不同于 ActiveMQ 等 JMS 系统。 见ActiveMQ vs Apollo vs Kafka

    Kafka 的功能比 ActiveMQ 少,因为重点放在了性能上。因此在迁移之前,请检查您在 AMQ 中使用的功能是否在 Kafka 中。

    但是,有一个公开的建议是在 JMS 和 Kafka 之间架起一座桥梁,以完全满足您的需求。也许提供的链接可以帮助你 https://issues.apache.org/jira/browse/KAFKA-1995

    【讨论】:

      【解决方案2】:

      其实两者并不相同。再多花一点时间看看这两者共存 - 并听取在现场部署每一个的问题和快乐点 - 关于每一个都有更多要说的。

      首先,JMS 支持 点对点 消息传递(消息发送给单个消费者;消费者自己维护他们的消息队列)和 发布和订阅(发布/订阅)模型(其中消息被写入单个主题,消费者独立决定使用哪些消息)。

      在点对点消息传递架构中,消息生产者和消费者相互了解,而在发布/订阅模型中,他们不知道。 Apache Kafka 专注于 pub/sub 模型,维护一个单独的日志/主题,消费者从中读取偏移量。 Kafka 也是 built for the cloud以高吞吐量为核心考虑

      我们社区和聚会上的许多人对 JMS 之类的 MOM(面向消息的中间件)感到沮丧并转而使用 Kafka,原因归结为一个原因:可扩展性。他们认为 Kafka 比其他 MOM 更适合扩展,因为 Kafka 维护一个分区的主题日志。这样,Kafka 可以通过分区将消息流拆分到消费者组并批量传输消息。

      这个概念还允许 Kafka 对 Kafka 消费者的 ACL(访问控制)进行更精细的控制,尽管 Apache Pulsar 正在解决其中的一些问题。

      最后,在 Kafka 上,由于客户端/消费者决定使用哪些消息(通过主题中的偏移量),这消除了一些生产者端的复杂性,这些路由规则内置于 JMS 等 MOM 中。

      还有更多不同之处,但这是对一些不断出现的差异的提炼!希望这可以帮助。

      【讨论】:

        【解决方案3】:

        不,Kafka 使用自己的非标准协议和客户端。

        但是,有一个第三方JMS Client for Kafka from Confluent

        【讨论】:

        • 不确定调用 Kafka 专有是否正确。它是完全开源的,由 Apache 软件基金会 (apache.org) 管理,该基金会为客户端、代理和 Kafka 协议发布源代码。
        • JMS 规范是由 Java Community Process 定义的 API 规范。 AMQP 1.0 是 OASIS 定义的协议规范。 JMS 和 AMQP 都不是像 ActiveMQ 和 Kafka 这样的软件。 JMS 和 AMQP 都有专有和开源软件实现。 Apache ActiveMQ 和 Apache Kafka 是 Apache 软件基金会的项目,并作为免费开源软件 (FOSS) 获得许可,“这与专有软件不同,后者的软件受版权限制,源代码通常对用户隐藏” .
        • 我可能误用了“专有”一词,因为我不是以英语为母语的人 - 编辑了我的答案以更准确地反映我的意思。
        猜你喜欢
        • 2016-05-01
        • 1970-01-01
        • 2017-11-22
        • 2016-12-10
        • 2021-08-22
        • 1970-01-01
        • 2021-01-05
        • 2018-11-05
        相关资源
        最近更新 更多