小编Vis*_*mar的帖子

“消息:经纪人不可用。” 在spring websocket上实现stomp时出错

我正在使用 spring WebSocket、SockJs 和 Amazon MQ 构建一个示例聊天应用程序。当客户端订阅主题时,它会抛出“代理不可用”异常。所有入站流量规则都在 AWS 安全组中正确设置,并且代理也有 stomp 支持。我正在关注这个Spring Guide

如果我使用的是内存代理,它工作正常。我非常感谢您对此的帮助,以下是示例代码。

代理:Amazon MQ(内部使用 Active MQ)

版本:5.15.0

WebSocketConfig.java

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {

    registry.enableStompBrokerRelay("/topic")
            .setRelayHost("***********.mq.us-east-2.amazonaws.com").setRelayPort(61614)
            .setClientLogin("******").setClientPasscode("*****");

    registry.setApplicationDestinationPrefixes("/app");

}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {

    registry.addEndpoint("/chat-endpoint").withSockJS();
}
Run Code Online (Sandbox Code Playgroud)

应用程序启动日志

.......
INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Starting...

INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Starting "system" session, StompBrokerRelay[ReactorNettyTcpClient[reactor.netty.tcp.TcpClientDoOn@7acb7b3e]]

INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Started.
......
Run Code Online (Sandbox Code Playgroud)

客户

var socket = new SockJS('/chat-endpoint');
    stompClient = Stomp.over(socket);

    stompClient.connect({}, function(frame) {

        setConnected(true); …
Run Code Online (Sandbox Code Playgroud)

spring stomp sockjs spring-websocket amazon-mq

3
推荐指数
1
解决办法
1412
查看次数

标签 统计

amazon-mq ×1

sockjs ×1

spring ×1

spring-websocket ×1

stomp ×1