是不是Apache Kafka
JMS
的另一个实现?
我在我的应用程序中使用JMS+AMQ
,并迁移到Apache Kafka
。我是否必须更改所有JMS
代码?
不,Kafka与ActiveMQ等JMS系统不同。见ActiveMQ vs Apollo vs Kafka
Kafka的功能少于ActiveMQ,因为压力已经放在了表演上。因此,在迁移之前,请检查您在AMQ中使用的功能是否在Kafka中。
但是,有一个公开的建议,即JMS和Kafka之间的桥梁,以准确地提供您所需要的。也许提供的链接可以帮助你https://issues.apache.org/jira/browse/KAFKA-1995
不,Kafka使用自己的非标准协议和客户端。
但是,有一个第三方JMS Client for Kafka from Confluent。
实际上,两者并不相同。再多一点时间看到这两者并存 - 并且倾听那些在现场部署的问题和幸福点 - 对每一个都有更多的说法。
首先,JMS支持点对点消息传递(消息发送给单个消费者;消费者自己维护消息队列)和发布 - 订阅(发布/订阅)模型(消息写入单个主题)和消费者,独立地决定消费哪些消息。
在点对点消息传递体系结构中,消息生成者和消费者彼此了解,而在pub / sub模型中他们不知道。 Apache Kafka专注于发布/订阅模型,维护一个单独的日志/主题,消费者可以从中读取偏移量。 Kafka也是built for the cloud,高吞吐量是核心考虑因素。
在我们的社区和聚会中,许多人都沮丧地向像JMS这样的MOM(面向消息的中间件)沮丧地转而使用Kafka,原因可以归结为:可扩展性。他们认为Kafka比其他MOM更适合扩展,因为Kafka维护一个分区主题日志。通过这样做,Kafka可以通过分区和批量传输消息将消息流分离到消费者组。
这个概念还允许Kafka对Kafka消费者进行更细粒度的ACL控制(访问控制),尽管Apache Pulsar正在解决一些问题。
最后,在Kafka上,由于客户端/消费者决定使用哪些消息(通过主题中的偏移量),这消除了内置于MOM(如JMS)中的路由规则的生产者端复杂性。
除此之外还有更多不同之处,但这是一些不断涌现的东西!希望这可以帮助。