Spring WS Stomp从SimpleBroker迁移至RabbitMQ StompBrokerRelay遇连接异常
排查RabbitMQ与StompBrokerRelay连接异常的实操步骤
1. 核查RabbitMQ Stomp插件的端口状态
- 默认Stomp插件监听
61613端口,Windows环境下执行命令确认端口是否正常监听:netstat -ano | findstr :61613 - 若端口未被监听,重新启用Stomp插件并重启服务:
rabbitmq-plugins enable rabbitmq_stomp rabbitmq-server restart
2. 补全StompBrokerRelay的认证配置
Spring 6.x版本的StompBrokerRelay默认要求RabbitMQ认证,需在配置中明确指定正确的登录信息(默认RabbitMQ用户为guest/guest,仅允许本地访问):
@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableStompBrokerRelay("/topic", "/queue") .setRelayHost("localhost") .setRelayPort(61613) .setClientLogin("guest") .setClientPasscode("guest") .setSystemLogin("guest") .setSystemPasscode("guest"); } }
- 若需远程连接RabbitMQ,需修改
guest用户的访问限制,或创建拥有对应虚拟主机权限的新用户。
3. 验证RabbitMQ虚拟主机权限
- StompBrokerRelay默认连接
/虚拟主机,登录RabbitMQ管理界面,进入Admin->Virtual Hosts,确认该虚拟主机存在且指定用户拥有读写权限。
4. 排查Windows防火墙拦截
- 临时关闭Windows防火墙测试连接,或添加入站/出站规则,允许
61613端口的TCP通信。
5. 确认版本兼容性
- Spring 6.0.9需搭配RabbitMQ 3.11及以上版本,避免因版本不兼容导致的连接异常。
6. 开启详细日志定位根因
在application.properties中添加日志配置,抓取连接失败的具体堆栈信息:
logging.level.org.springframework.messaging.simp.stomp=DEBUG logging.level.org.springframework.web.socket=DEBUG logging.level.com.rabbitmq=DEBUG
内容的提问来源于stack exchange,提问作者Tobia
相关产品推荐
相关产品推荐

