简体   繁体   English

如何使docker中的RabbitMQ在去本地RMQ时获取消息

[英]how to make RabbitMQ in docker get messages when it is going to local RMQ

I have RabbitMQ Erlang 13.1.2 and RabbitMQ 3.11.2 installed in my local and I have deployed a docker container with RabbitMQ instance runnning as well.我在本地安装了 RabbitMQ Erlang 13.1.2 和 RabbitMQ 3.11.2,并且部署了一个运行 RabbitMQ 实例的 docker 容器。 I cant unistall / stop my local RabbitMQ as I dont have admin rights at the moment.我无法卸载/停止我的本地 RabbitMQ,因为我目前没有管理员权限。

I am running a WebSocket SpringBoot App in which MessageBroker Rabbit is configured as follows我正在运行一个 WebSocket SpringBoot 应用程序,其中 MessageBroker Rabbit 配置如下

@Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config
            .setApplicationDestinationPrefixes("/app")
            .enableStompBrokerRelay("/topic")
            .setRelayHost("localhost")
            .setRelayPort(61613)
            .setClientLogin("admin")
            .setClientPasscode("admin");
    }

The Issue is When I change credentials to guest which is my local RMQ server.问题是当我将凭据更改为来宾时,这是我的本地 RMQ 服务器。 All the messages go to local RMQ server and it works fine but when I change it to admin my docker RMQ user it shows所有消息都发送到本地 RMQ 服务器并且工作正常但是当我将其更改为管理我的 docker RMQ 用户时它显示

<<< ERROR
message:Bad CONNECT
content-type:text/plain
version:1.0,1.1,1.2
content-length:32

Access refused for user 'admin'

both local and docker instance run on localhost with same ports exposed I dont know how to get messages sent to docker instance.本地和 docker 实例都在本地主机上运行,并暴露相同的端口我不知道如何将消息发送到 docker 实例。

It is not possible to bind two network services on the same host to one port.不可能将同一台主机上的两个网络服务绑定到一个端口。 One of them simply would not start.其中一个根本无法启动。 So you either forgot to publish RabbitMQ port when you started docker container, or container uses some other port.因此,您要么在启动 docker 容器时忘记发布 RabbitMQ 端口,要么容器使用了其他端口。 To start RabbitMQ docker container, exposing a port you should use --publish / -p option of the docker run command:要启动 RabbitMQ docker 容器,暴露一个端口,你应该使用 docker docker run命令的--publish / -p选项:

docker run -d --hostname rmq --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3

In this example RabbitMQ instance, running inside docker, will be available on the host through default ports.在此示例中,在 docker 中运行的 RabbitMQ 实例将通过默认端口在主机上可用。 See docker documentation for the additional info.有关其他信息,请参阅docker 文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM