分布式消息队列之其他队列
一、Rabbitmq
二、RocketMQ
与kafka的区别:
- 纯java开发,不用zk
- 支持延迟投递,消息溯源等
- 多个队列使用一个日志文件,所以不存在kafka过多topic之后慢的问题
三、Pulsar
Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。 Pulsar 最初由 Yahoo 开发,目前由 Apache 软件基金会管理。
Pulsar的关键特性如下:
- Pulsar的单个实例原生支持多个集群,可跨机房在集群中无缝完成消息复制
- 极低的发布延迟和端到端延迟
- 可无缝扩展到超过一百万个topic
- 简单的客户端API,支持Java、Go、Python和C++
- 支持多种topic订阅模式(独占订阅、共享订阅、故障转移订阅)
- 通过Apache BookKeeper提供的持久化消息存储机制保证消息传递
- 基于Pulsar Functions的serverless connector框架Pulsar IO使得数据更易移入、移出Apache Pulsar
- 分层式存储可在数据陈旧时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中
命名空间
命名空间是租户内部逻辑上的命名术语。 可以通过admin API在租户下创建多个命名空间。你可以在namespace下创建任意数量的topic。
订阅模式
4种订阅模式
消息去重
消息去重保证了一条消息只能在 Pulsar 服务端被持久化一次
生产者幂等
Pulsar种,broker上可以处理消息去重
实际一次语义
消息延迟传递
单机模式安装
下载:wget https://archive.apache.org/dist/pulsar/pulsar-2.8.0/apache-pulsar-2.8.0-bin.tar.gz
下载好压缩文件后,解压缩并使用 cd 命令进入文件所在位置
单机启动:
bin/pulsar standalone
消费消息:
bin/pulsar-client consume my-topic -s "first-subscription"
生产消息:
bin/pulsar-client produce my-topic --messages "hello-pulsar"
四、Camel
Apache Camel 是一个开源集成框架,它使您能够快速、轻松地集成各种消费或生成数据的系统。
Apache Camel 使用 uri 来简化与各种传输或消息传递模型的集成,包括 HTTP、 ActiveMQ、 JMS、 JBI、 SCA、 MINA 或 CXF,并与可插入数据格式选项一起工作。Apachecamel 是一个小型库,它具有最小的依赖性,便于在任何 Java 应用程序中嵌入。Apache Camel 允许您使用相同的 API,而不管传输类型如何,从而使您能够在对 API 有了很好的理解的情况下,与所提供的所有组件进行交互
我们可以使用Camel把activeMq里面的消息转移到RabbitMQ里去。