- 主题(Topic):消息的逻辑分组,所有消息都属于一个主题。
- 生产者(Producer):将消息发送到Kafka,可以指定主题和分区。
- 消费者(Consumer):从Kafka消费消息,可以订阅一个或多个主题。
- 分区(Partition):一个主题可以分成多个分区,每个分区都是一个有序的日志,可以在多个节点上进行并行处理。
- 偏移量(Offset):消费者可以记录自己已经消费过的位置,称之为偏移量,Kafka会为每个分区维护一个偏移量。
消息通过一个或多个Kafka集群的代理(Broker)进行传输和存储。
2.RabbitMQ
RabbitMQ是一个开源、跨平台的消息中间件,实现了AMQP协议,支持多种编程语言,RabbitMQ是erlang语言开发。
RabbitMQ架构,如下图所示:
RabbitMQ原理会涉及到如下组件:
- 队列(Queue):消息的存储区域,消费者从队列中获取消息,生产者将消息发送到队列中。
- 交换器(Exchange):接收生产者的消息,并根据路由键将消息发送到相应的队列中。
- 绑定(Binding):连接交换器和队列之间的路由规则。
- 生产者(Producer):将消息发送到交换器中。
- 消费者(Consumer):从队列中获取消息。
RabbitMQ主要应用于任务分发、异步通信、事件驱动等场景。
3.ActiveMQ
ActiveMQ是一个流行的开源消息中间件,支持JMS和STOMP协议,适用于异步通信、解耦和缓冲等场景。
ActiveMQ是老牌的消息中间件,是第一代的消息中间件,是一个完全基于 JMS(Java 消息服务)规范的消息中间件。
4.RocketMQ