开源Titan:一个用SpringBoot实现的轻量级消息分发平台

开源Titan:一个用SpringBoot实现的轻量级消息分发平台

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

Titan是一个基于STOMP协议的轻量级消息分发平台,使用SpringBoot实现,可独立运行JAR包,无需外部依赖。支持TCP和WebSocket传输,提供统一客户端API、自动连接恢复、Spring集成和内置监控。适用于实时通知、聊天和遥测数据分发,但不支持持久化和集群化。

🔎

延伸解读

轻量级消息中间件的定位

Titan 明确不替代 Kafka 或 RabbitMQ,而是聚焦于实时通知、聊天、遥测数据扇出等场景。它不提供持久化、集群化,适合快速引入实时消息能力但不想搭建复杂基础设施的项目。选择 Titan 前需评估业务是否依赖消息持久化或跨服务端恢复,否则可能需自行补充。

STOMP 协议的简单性

STOMP 协议帧格式简单,仅由命令、头部、正文组成,无需 XML 解析。Titan 基于 STOMP 1.2,支持 TCP、WebSocket 和 TLS。这种简单性降低了客户端实现和调试成本,但协议本身功能有限,可能不适合复杂消息路由或高级 QoS 需求。

部署与运维的便捷性

Titan 以独立 JAR 包运行,无需外部依赖,一条 java -jar 命令即可启动。内置 HTTP 监控端点和 CLI 工具,可查看 JVM 和队列状态。这简化了部署和运维,但监控仅限本地,且无集群支持,生产环境需自行考虑高可用和监控扩展。

Q&A

Titan是什么?它基于什么协议?

Titan是一个轻量级的消息分发平台,基于STOMP协议(流文本定向消息协议)提供实时的消息发布/订阅能力。它由traffic-hunter团队开发,采用MIT许可证开源。

Titan与Kafka或RabbitMQ有什么区别?

Titan不是Kafka或RabbitMQ这类持久化、集群化的重量级消息中间件替代品。它不提供持久化存储、集群化和跨服务端恢复的保证,适用于实时通知、聊天、遥测数据分发等场景,而Kafka和RabbitMQ则更适合需要持久化和高可靠性的场景。

Titan如何快速启动?需要哪些环境?

Titan需要JDK 21或更高版本。启动步骤包括:下载titan-server-0.8.0.jar,创建配置文件titan-env.yml,然后使用命令`java -Dtitan.environment.path=./titan-env.yml -jar titan-server-0.8.0.jar`启动服务。无需外部依赖,如数据库或Redis。

Titan支持哪些传输方式?

Titan支持TCP、WebSocket和TLS多种传输方式,基于STOMP 1.2协议。

Titan的客户端API有什么特点?

Titan提供统一的客户端API TitanClient,屏蔽了底层实现差异,Native和Vert.x两种实现共用同一套消息接口。客户端还支持自动连接恢复,在意外断开后自动重连并恢复之前的订阅关系。

Titan如何与Spring Boot集成?

Titan提供Spring Boot集成,通过TitanTemplate发送消息,使用@TitanListener注解接收消息。

Titan有哪些监控功能?

Titan提供内置监控,包括本地HTTP监控API和命令行CLI工具。HTTP监控端点有健康检查(/titan/monitor/health)和快照(/titan/monitor/snapshot),CLI工具支持查看队列状态等操作。监控聚焦于JVM、通道和目的地队列的可视化。

Titan的适用场景有哪些?

Titan适用于实时通知推送、聊天类消息系统、遥测数据的扇出分发,以及需要快速引入实时消息能力但不想搭建复杂基础设施的场景。

🏷️

标签

➡️

继续阅读