每天分享最新软件开发,Devops,敏捷,测试以及项目管理最新,最热门的文章,每天花3分钟学习何乐而不为,希望大家点赞,加关注,你的支持是我最大的动力。
目前使用的两种最流行的消息代理是 Kafka 和基于 JMS 的消息代理。JMS 是一个由来已久的 JAVA API,通常用于开发消息传递应用程序,其主要功能是能够在两个或多个客户机之间发送消息。另一方面,Kafka 是一个分布式流媒体平台,它提供了很多可伸缩性,对于实时数据处理非常有用。
虽然两者都提供了各自的优势,而且各自都非常有用,但是实际上您应该使用这两者中的哪一个呢?
JMS 出现的时候,程序需要一种方法来实现不同应用程序或系统不同组件之间的异步通信。根据 Red Hat Reactive Architect Clement Escopier 的说法,消息代理已经相对老化了。
“过去20年来,JMS 已经成功地解决了许多问题。而且我们在银行系统中发现它,在异步很重要的较小的应用程序中,例如订购系统或物流,甚至物联网。它在云计算、 Kube.NETes 或容器上运行得相对较好,因为当你有队列时,它没有任何消费者限制,”他在接受《鸡尾酒编码》采访时告诉我们。
埃斯科菲尔说,JMS 的优势之一是它以 Java 为中心。
你可以使用其他的协议。但这是一个明确的语义,当你在 Java 中,你确切地知道它将如何工作,”他说。
虽然Kafka最近可能受到很多炒作,埃斯科菲尔说,JMS 仍然非常受欢迎。
“它仍然被大量使用。作为 Quarkus 团队的成员,我们对 JMS 有很多需求。很受欢迎的。Kafka是一项非常酷的技术,但当人们在拥有更多遗留系统的情况下进行迁移时,JMS 仍然是发生事情的地方。”
另一方面,Kafka是一种不同的技术。
“它是一个消息传递代理,因此可以将其与 JMS 进行比较。再加上这个,这就是一个存储系统。JMS 在一定程度上与此类似,但程度要小得多。除此之外,它还是一个Kafka连接的数据集成平台。它也是一个流处理平台与Kafka流。这些都是Apache Kafka下载的一部分,”他在Cocktails podcast Technology播客技术中说。
Waehner 补充说,Kafka 与 JMS 的不同之处在于,它是一个实现,而不是一个标准。
“这不是一个有不同供应商的标准,而是一个实现。最重要的是,它不仅仅是信息传递。这就是区别。在将来,我们仍然会看到这两者,因为 JMS 和 Kafka 用于非常不同的用例。对于发布-订阅消息传递来说,如果它没有极大的伸缩性,那么至少 JMS 代理非常适合这种情况。其他方面,人们更多地使用Kafka。”
Waehner 说,Kafka 也偏离了10年前对大数据的初衷,现在用于分析和事务工作负载,这是 JMS 的原始领域。
”今天,我看到的用例中超过50% 是关于事务性工作负载的。有些人说‘我应该一直使用 JMS 来处理事务性工作负载’,但事实并非如此。你需要明白,你也可以使用Kafka的事务性工作负载,”他解释说。
虽然两个服务具有相同的意图,但是 Kafka 和 JMS 具有关键的差异。在两者之间做出选择仍然取决于您的用例,并且在这样做时需要考虑一些事情。在某些情况下,您甚至可以将它们一起使用,例如当应用程序同时调用消息传递和消息日志记录时。
了解更多关于 JMS 和卡夫卡以及他们在Cocktails上编码的其他用例——在这里,我们与世界领先的架构、设计和促进数字转换的技术方面的专家交谈,这些技术可以在苹果、谷歌播客、 Spotify、 Soundcloud 和 Stitcher 上找到。