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への接続が失われました