2017-07-24 570 views
1

我正在构建一个用户RabbitMQ作为消息代理的Spring Websocket应用程序。使用rabbitmq配置Spring websocket时出现非回送访问被拒绝错误

配置文件提供以下

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

@Override 
public void configureMessageBroker(MessageBrokerRegistry config) { 
    config.enableStompBrokerRelay("/topic") 
      .setRelayHost("192.168.1.8") 
      .setRelayPort(61613) 
      .setClientLogin("user") 
      .setClientPasscode("user"); 

    //config.enableSimpleBroker("/topic"); 
    config.setApplicationDestinationPrefixes("/app"); 
} 

@Override 
public void registerStompEndpoints(StompEndpointRegistry registry) { 
    registry.addEndpoint("/gs-guide-websocket").setAllowedOrigins("*").withSockJS(); 
} 
} 

但是,当我运行的应用程序它给了我下面的错误

Received ERROR {message=[Bad CONNECT], content-type=[text/plain], version=[1.0,1.1,1.2], 
content-length=[26]} session=_system_ text/plain payload=non-loopback access denied 

我曾试图给出所需的权限RabbitMQ的

sudo rabbitmqctl set_permissions -p/user ".*" ".*" ".*" 

但仍然出现问题。但是,如果我将'setRelayHost(..)'中的ipaddress替换为'localhost'或'127.0.0.1',则应用程序可以正常工作。

+0

您是否解决了此问题? – pranag

回答

1

RabbitMQ允许您配置用户只能通过回送接口(本地主机)进行连接,这也是默认用户的情况。检查您的用户是否在配置文件中的loopback_users属性下配置,或者如果这是默认用户。

请检查https://www.rabbitmq.com/access-control.html

相关问题