[英]"message:Broker not available." error when implementing stomp over spring websocket
我正在使用 spring WebSocket、SockJs 和 Amazon MQ 構建示例聊天應用程序。 當客戶端訂閱主題時,它會拋出“代理不可用”異常。 所有入站流量規則都在 AWS 安全組中正確設置,並且代理也有 stomp 支持。 我正在關注這個Spring 指南。
如果我使用內存代理,它工作正常。 非常感謝您對此的幫助,下面是示例代碼。
Broker: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 接受版本:1.1,1.0 心跳:10000,10000
錯誤消息:經紀人不可用。 內容長度:0
stomp.min.js:8 糟糕! 失去與http://localhost:8080/testApp/chat-endpoint 的連接
我有同樣的問題。 為了修復它,我稍微更改了 configureMessageBroker 方法:
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
ReactorNettyTcpClient<byte[]> client = new ReactorNettyTcpClient<>(tcpClient -> tcpClient
.host("your-amazon-mq-host.amazonaws.com")
.port(61614)
.secure(SslProvider.defaultClientProvider()), new StompReactorNettyCodec());
registry.setApplicationDestinationPrefixes("/app");
registry.enableStompBrokerRelay("/queue", "/topic")
.setAutoStartup(true)
.setSystemLogin("amazonmq-login")
.setSystemPasscode("amazonmq-pass")
.setClientLogin("amazonmq-login")
.setClientPasscode("amazonmq-pass")
.setTcpClient(client);
}
你好,我知道如何修復它,好的 你不應該安裝 stomp 插件 cd /opt/homebrew/opt/rabbitmq/sbin/ rabbitmq-plugins enable rabbitmq_stomp rabbitmq-plugins enable rabbitmq_web_stomp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.