我正在使用SPRING AMQP连接RabbitMq经纪人。我对注册过程有疑问。 为什么在Docker容器中运行使用者时为什么不需要公开其他端口? 我在Java应用程序中使用异步侦听器发送消息。
当我启动rabbitMq:management docker image时,它的端口5672公开以接收来自发布者的消息。为什么消费者不需要为兔子经纪人也公开端口以接收来自它的消息?
我已经搜索了兔子网页https://www.rabbitmq.com/consumers.html#subscribing,但编写的内容并不多。关于这里的网络,也许有些我不了解的地方。
我期待任何想法。 问候
答案 0 :(得分:1)
您不需要公开使用方上的任何端口,因为使用方应用程序正在RabbitMQ上订阅以获取事件。这意味着您的消费者正在调用RabbitMQ,从而使其能够知道它正在侦听,并且可以从Docker容器进行调用,而无需打开端口。
有关RabbitMQ.中消费方式的更多详细信息
答案 1 :(得分:0)
默认情况下,大多数默认基础映像都允许所有出口连接,只有入口连接才需要我们在docker映像上公开require PORT。
此外,如果您想阻止任何特定的入站或出站网络,则可以在入口点执行类似的操作。 Sh脚本文件。
#!/usr/bin/env sh
#
# iptables configuration
#
# The following allows in- and outbound traffic
# within a certain `CIDR` (default: `192.168.0.0/24`),
# but blocks all other network traffic.
#
ACCEPT_CIDR=${ALLOWED_CIDR:-192.168.0.0/24}
iptables -A INPUT -s $ACCEPT_CIDR -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -d $ACCEPT_CIDR -j ACCEPT
iptables -A OUTPUT -j DROP
#
# After configuring `iptables` as root, execute
# the passed command as the non-privileged `app` user.
#
sudo -u app sh -c "$@"