从ActiveMQ发送消息到docker容器中的主题订阅者

从ActiveMQ发送消息到docker容器中的主题订阅者

我在 docker 容器中有一个应用程序mqtt-client

我已经在主机(Windows)上安装了具有 mqtt 接口的 ActiveMQ-Broker:0.0.0.1:1549

(实际上,我可以将 winwows-PC 称为超级主机。Docker 容器在 Windows-Host 上的 WSL2-host(Debian)中运行。

Docker 容器配置了默认网络设置,例如bridged network,不公开任何端口。

我的mqtt clientdocker-container 可以成功连接到在 host-windows 上运行的 ActiveMQ 代理,通过Host-IP:1549

mqtt client在docker-container上订阅了一个主题。

然后,我使用 ActiveMq 管理控制台向该主题发送一条消息:

在此处输入图片描述

不幸的是,我的mqtt clientdocker-container 没有收到该消息。

我在 Windows 上运行了另一个 mqtt 客户端并订阅了同一主题,以确认ActiveMq Broker已成功将消息发送给订阅者,并且看到,是的,Windows 上的 mqtt 客户端可以毫无问题地接收消息。

docker-container会不会是因为可以到达windows-host,但windows-host无法写入所有端口而发生问题docker-container

我看到 ActiveMQ 中建立的连接如下:

在此处输入图片描述

3718这是否意味着我应该在执行时公开端口docker run,以便 Windows 主机中的 AciveMq 向 docker-container 发送消息?但假设这个端口每次都改变,我该怎么办?

如何实现Windows-Host上的ActiveMQ broker向运行的订阅者发送消息docker-container

答案1

问题不在于网络。因此,问题的答案是:

如果docker-container-client连接到broker,那么broker就可以毫无问题地将消息发送给docker-container-client。

这个问题很愚蠢:实际上,在低级中,消息已经被接收,但是在高级代码中却无法看到它。

相关内容