我正在尝试配置Spring引导WebSocket并分离Stomp Broke。
以下是插座的配置:
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")
.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost("localhost")
.setClientLogin("guest")
.setClientPasscode("guest");
}
docker-compose.yml我用来制作rabbitMq代理:
version: '2'
services:
rabbitmq-stomp:
image: "jorgeacetozi/rabbitmq-stomp:3.6"
ports:
- "5672:5672"
- "15672:15672"
- "61613:61613"
environment:
- RABBITMQ_DEFAULT_USER=test
- RABBITMQ_DEFAULT_PASS=password
当我运行应用程序时,它会出现以下错误:
2018-07-23 11:13:59.734 ERROR 2958 --- [ent-scheduler-4] o.s.m.s.s.StompBrokerRelayMessageHandler : Received ERROR {message=[Bad CONNECT], content-type=[text/plain], version=[1.0,1.1,1.2], content-length=[32]} session=_system_ text/plain payload=Access refused for user 'guest'
rabitMq终端日志显示:
rabbitmq-stomp_1 | =ERROR REPORT==== 23-Jul-2018::05:38:00 ===
rabbitmq-stomp_1 | STOMP error frame sent:
rabbitmq-stomp_1 | Message: "Bad CONNECT"
rabbitmq-stomp_1 | Detail: "Access refused for user 'guest'n"
rabbitmq-stomp_1 | Server private detail: none
我该如何解决这个问题?
您可能需要使用set_permissions命令显式设置权限
set_permissions[-p vhostpath]{user}{conf}{write}{read}
在docker_compose中使用命令标签:
version: '2'
services:
rabbitmq-stomp:
image: "jorgeacetozi/rabbitmq-stomp:3.6"
ports:
- "5672:5672"
- "15672:15672"
- "61613:61613"
environment:
- RABBITMQ_DEFAULT_USER=test
- RABBITMQ_DEFAULT_PASS=password
command: rabbitmqctl set_permissions -p /myvhost guest ".*" ".*" ".*"