RocketMQ 5.1.4集群部署在内网环境,分散在3台内网机器上(都没有公网ip),然后把内网集群的nameserver的端口9876映射到公网,外部公网环境的java服务可以连接这个rocketmq集群嘛?
在您的情况下,如果内网的RocketMQ集群的NameServer的端口9876已经映射到公网,那么外部公网环境的Java服务应该可以连接这个RocketMQ集群。但是,这要取决于具体的网络配置和防火墙规则。
首先,确保您的内网环境能够正常访问RocketMQ集群。通常,NameServer是一个无状态节点,可集群部署,节点之间无任何信息同步。因此,即使NameServer分布在3台内网机器上,只要它们之间的通信没有问题,那么整个集群应该是可用的。
其次,如果您已经将NameServer的端口9876映射到公网,那么从公网访问这个端口应该能够到达NameServer。这一步通常涉及到路由器或防火墙的配置。
最后,外部的Java服务需要知道NameServer的地址。这通常是通过在Java服务的配置文件中设置namesrvAddr
来实现的。例如,如果NameServer的公网地址是your_nameserver_ip:9876
,那么在Java服务的配置文件中应该设置为:
rocketmq.name-server=your_nameserver_ip:9876
一旦这些步骤都完成了,外部的Java服务应该就能够连接到您的RocketMQ集群了。
如果您在内网环境中部署了RocketMQ 5.1.4集群,并将内网集群的NameServer端口9876映射到公网,那么外部公网环境的Java服务是可以连接到这个RocketMQ集群的。
通过将内网的NameServer端口映射到公网,即使RocketMQ集群所在机器没有公网IP,但外部公网环境的Java服务仍然可以使用公网IP和映射后的端口来访问和连接RocketMQ集群。
确保在Java服务中正确配置RocketMQ集群的NameServer地址,使用公网IP和映射后的端口进行连接。例如:
String nameServerAddress = "公网IP:9876";
DefaultMQProducer producer = new DefaultMQProducer("producerGroup");
producer.setNamesrvAddr(nameServerAddress);
producer.start();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/