常见问题
通用
FlowMQ 是什么?
FlowMQ 是新一代高性能统一消息与流处理平台,在单一平台中原生支持 MQTT、Kafka 和 AMQP 协议。它将消息队列、数据流和发布/订阅消息传递融合为一套统一系统,消除了管理多个专用 Broker 的复杂性。
FlowMQ 与 Kafka、RabbitMQ 有何区别?
FlowMQ 结合了两者的优势:
- 类似 Kafka:提供持久化、可重放的 Stream(流),支持消费者管理偏移量,适合事件溯源和流处理。
- 类似 RabbitMQ:提供 Queue(队列),消息投递给消费者,消费确认后删除。
FlowMQ 的目标是在更简单的运维模型和统一 API 下,同时提供这两种模型的能力。
概念
Topic、Queue 和 Stream 有什么区别?
- Topic(主题):消息发布的路由地址。客户端可以直接从 Topic 消费,也可以通过 Queue 或 Stream 来接收消息。
- Queue(队列):提供消息队列语义:消息先缓存到队列中,再按需投递给消费者,消费确认(ACK)后删除。
- Stream(流):持久化、有序的消息日志。多个消费者(组)可以独立读取同一个 Stream,各自追踪偏移量。消息不会因读取而删除,根据保留策略过期。适合发布/订阅、事件溯源、可重放的事件历史。
什么时候用 Queue,什么时候用 Stream?
- Queue:当你需要将任务分发给一组 Worker,确保每个任务只被处理一次(如请求处理、图像缩放等)。
- Stream:当你需要将消息广播给多个独立消费者,或需要持久化的可重放事件历史(如用户行为追踪、金融行情、审计日志等)。
消费者未确认 (ack) Queue 中的消息会怎样?
如果消费者收到消息后崩溃或断连,FlowMQ 不会认为该消息已处理。超过可配置的超时时间后,FlowMQ 会将消息重新投递给其他可用的消费者,确保消息不会丢失。
消息持久化保证是什么?
发布到 FlowMQ 的消息会在写入磁盘后才向生产者返回确认,即使 Broker 重启也不会丢失消息。