Я создаю пример приложения для чата с использованием 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();
}
Журнал запуска приложения
.......
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); });
});
Журнал консоли браузера
Открытие веб-сокета ... Веб-сокет открыт ... ПОДКЛЮЧИТЬ Принять-версия: 1.1,1.0 Пульс: 10000,10000
Сообщение об ошибке: брокер недоступен. content-length: 0
stomp.min.js: 8 К сожалению! Потеряно соединение с http://localhost:8080/testApp/chat-endpoint