4

Spring WebSocket、SockJs、および Amazon MQ を使用して、サンプル チャット アプリを構築しています。クライアントがトピックをサブスクライブすると、「ブローカーが利用できません」という例外がスローされます。すべてのインバウンド トラフィック ルールは AWS セキュリティ グループで正しく設定されており、ブローカはストンプ サポートも備えています。この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();
}

アプリケーション起動ログ

.......
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.
......

クライアント

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

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

        setConnected(true);
        stompClient.subscribe('/topic/message', function(message) {
                                   displayMessage(message); });

});

ブラウザ コンソール ログ

Web ソケットを開いています... Web ソケットが開かれました... CONNECT accept-version:1.1,1.0 heart-beat:10000,10000

エラー メッセージ: ブローカーが利用できません。コンテンツの長さ:0

stomp.min.js:8 おっと!http://localhost:8080/testApp/chat-endpointへの接続が失われました

4

1 に答える 1