知识卡片

目的地前缀驱动的消息路由设计

专业/工作 · 625.b

内容

Spring基于STOMP实现消息分发时,靠目的地路径的前缀来决定消息该走哪条处理路径:以/app开头的消息会被路由到带有@MessageMapping/@SubscribeMapping注解的方法,交给业务代码自定义处理逻辑;以/topic或/queue开头的消息直接进入内置的消息代理,按订阅关系广播/排队分发,不经过业务代码;以/user开头的消息会被重定向到某个用户专属的目的地,用于实现私聊。同一套连接和协议,靠路径前缀这一个维度就把”需要业务逻辑介入的消息”和”只需框架层广播的消息”区分开。发散:这是把”路由决策”编码进命名约定本身的做法——不需要额外的配置表,看一眼目的地路径就能推断这条消息会被谁处理,代价是路径前缀本身成了一种隐性契约,改动前缀会牵连所有依赖它的客户端与服务端代码。

参考来源

《Spring Boot应用开发实战》第8章《实战1:基于STOMP协议的聊天服务》