Kafka 和 RabbitMQ 都是流行的消息中间件系统,他们各自都有一些优势和适用场景。以下是 Kafka 相对于 RabbitMQ 的一些比较明显的优势: 分布式架构: Kafka 是为大规模分布式流处理而设计的,具有高度可伸缩性。RabbitMQ 虽然也支持分布式架构,但相对而言,Kafka
在Kafka中,Topic和Partition是两个密切相关的概念。 Topic是Kafka中消息的逻辑分类,可以看作是一个消息的存储类别。它是按照不同的主题对消息进行分类,并且可以用于区分和筛选数据。每个Topic可以有多个Partition,每个Partition都是Topic的一个子集,包含了
Kafka 是一个分布式流处理平台,最初由LinkedIn开发并开源,后来成为Apache软件基金会的一个顶级项目。它被设计用于高吞吐量、持久性、分布式的数据流处理。 Kafka 实现了一套非常高效的订阅-发布模型,应用场景非常广泛。比如 日志聚合:Kafka 通常用于收集和聚合分布式系统中产生的日
RocketMQ的Producer有三种消息发送模式: 同步发送(Sync Send):这是默认的发送模式。在同步发送模式下,发送者发送一条消息后会等待 Broker 的响应,直到 Broker 确认收到消息并返回结果。如果发送失败,将会抛出异常。这种模式下,Producer 可以确保消息成功发送到
RocketMQ的Consumer消费消息的方式有两种:Push方式和Pull方式。 在 Push 推模式下,RocketMQ 的 Broker 会主动将消息推送给对应的 Consumer。而 Consumer 会注册一个 MessageListener 回调函数,并在接收到消息后立即触发回调函数。
广播消息和集群消息是 RocketMQ 的两种不同的消息消费模式。其中 广播模式意味着一条消息会被发送到所有订阅了这个主题 Topic 的消费者,而所有消费者都会收到相同的消息副本。 集群模式意味着一条消息只会分发给订阅了这个主题 Topic 的同一个消费者组中的一个消费者处理。每个消费者组只会处理
RocketMQ 提供了顺序消息机制,用来保证一组消息的局部有序性,具体实现步骤如下: Producer 在发送消息时,通过设置一个 MessageQueueSelector 方法,将一组有顺序的消息,依次发送到对应 Topic 下的同一个 MessageQueue 上。而 MessageQueue
RocketMQ消息过滤分为两种:基于表达式的过滤和基于类模式的过滤。 基于表达式的过滤有两种模式:TAG模式和SQL92模式。其中,RocketMQ 允许为每一条消息设置一个 Tag 标签。 TAG 模式下,Consumer 可以选择订阅特定的 TAG,对消息进行过滤。TAG模式根据消息的属性进行
RocketMQ 可以通过一系列措施保证全链路消息不丢失。 producer 发送消息时,使用消息确认机制,确保消息被成功发送。例如,不要使用 oneway 发送方式。使用异步机制发送消息时,发送消息后要等待一段时间再停止 Producer。使用事务消息机制保证消息正常发送到 Broker。 Bro
RocketMQ的事务消息是通过两阶段提交(Two-phase Commit)协议实现的。具体实现步骤如下: 发送方将半事务消息发送至RocketMQ服务端,由于消息为半事务消息,在未收到生产者对该消息的二次确认前,此消息被标记成“暂不能投递”状态,不会被消费。 发送方开始执行本地事务逻辑。可能是一