簡體   English   中英

如何使docker中的RabbitMQ在去本地RMQ時獲取消息

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

我在本地安裝了 RabbitMQ Erlang 13.1.2 和 RabbitMQ 3.11.2,並且部署了一個運行 RabbitMQ 實例的 docker 容器。 我無法卸載/停止我的本地 RabbitMQ,因為我目前沒有管理員權限。

我正在運行一個 WebSocket SpringBoot 應用程序,其中 MessageBroker Rabbit 配置如下

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

問題是當我將憑據更改為來賓時,這是我的本地 RMQ 服務器。 所有消息都發送到本地 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'

本地和 docker 實例都在本地主機上運行,並暴露相同的端口我不知道如何將消息發送到 docker 實例。

不可能將同一台主機上的兩個網絡服務綁定到一個端口。 其中一個根本無法啟動。 因此,您要么在啟動 docker 容器時忘記發布 RabbitMQ 端口,要么容器使用了其他端口。 要啟動 RabbitMQ docker 容器,暴露一個端口,你應該使用 docker docker run命令的--publish / -p選項:

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

在此示例中,在 docker 中運行的 RabbitMQ 實例將通過默認端口在主機上可用。 有關其他信息,請參閱docker 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM