寻求无需内存消息代理的Spring/Spring Boot与Apache Kafka、WebSockets集成方案
Spring Boot集成Apache Kafka与WebSocket生产级方案需求
核心需求
寻找可用、健壮、生产级的Spring/Spring Boot集成方案,实现WebSocket与Apache Kafka直接对接,禁止使用简单内存消息代理:
- 从WebSocket端点接收客户端消息后,通过
KafkaTemplate(或同类工具)发送至Kafka集群 - 反向订阅Kafka消息,直接推送给WebSocket客户端
- 移除多余、不可靠的中间件,简化链路
期望架构
client1 |<<==HTTP/WebSockets消息==>> 服务端Java WS/Kafka API <<===消息===>> Apache Kafka client2 | ... clientN |
注:实际架构包含数据库、存储及各类业务功能,为简化图示已省略。仅HTTP服务器暴露给客户端,承载页面及WebSocket服务端逻辑(或调用部署该逻辑的其他后端服务),Kafka Broker需隐藏在后端,避免暴露给外部攻击者。
当前遇到的问题
- 多数教程及示例均采用简单内存消息代理实现WebSocket消息转发,不符合生产级要求
- 理论上支持WebSocket与Kafka直接对接,相关文章也提及该实现,但未找到可直接复用的生产级方案
- GitHub上少量相关代码多年未维护,与当前Spring Boot版本不兼容,需依赖旧版API才能运行
- 考虑过WebFlux作为解决方案,但未找到符合需求的双向WebSocket示例(现有示例多基于POST请求,不满足双向通信要求)
已完成的工作
- 学习大量Kafka与WebSocket相关教程
- 多次搜索相关技术方案
- 在GitHub上筛选大量相关代码仓库
- 尝试基于WebFlux实现该双向对接功能
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

