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