activemq和kafka

本文对比分析了ActiveMQ和Kafka在消息传递上的差异。ActiveMQ支持点对点和发布/订阅模式,但无法保证消息的有序性和只被处理一次。而Kafka的消息分为主题和分区,确保每个分区内的消息有序,并通过Kafka Streams实现幂等消费。

1、activemq
 对于消息的传递有两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应:

在这里插入图片描述

另一种是发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收:

在这里插入图片描述

2、 kafka
每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic,一个主题可以划分多个分区。
在这里插入图片描述
3、区别
一个分组中的消费者消费主题上的消息,类似于activemq的队列模式
1、当多个消费者监听同一个队列时,activemq随机将消息随机分配给一个消费者,消息只被一个消费者消费,但是不能保证消息的有序性,要想保证有序性,有两种方式:一是所有不同类型的消息发送到一个队列上,只有一个消费者;二是,不同的消息分别发送到不同的队列上,各队列对应一个消费者,这样可以提供效率,但是代码结构复杂,需要维护多个队列。
2、kafka的同一个分区只会被分配给一个消费者消费,且同一个分区的消息被按序处理
3、activemq无法保证消费者只被处理一次。当activemq挂了,没有收到消费者的应答消息时,会认为消息未被处理,重新给消费者处理。
4、kafka streams方式可以保证消息只被处理一次。
kafka streams中,kvstore、sink消息到kafka主题、kafka broker从消费者拉取offsert应答,三个操作是原子操作
当最后kafk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值