开发者社区 > 云原生 > 消息队列 > 正文

RocketMQ 5.1.4集群部署在内网环境,外部公网环境的java服务可以连接这个集群嘛?

RocketMQ 5.1.4集群部署在内网环境,分散在3台内网机器上(都没有公网ip),然后把内网集群的nameserver的端口9876映射到公网,外部公网环境的java服务可以连接这个rocketmq集群嘛?

展开
收起
cuicuicuic 2023-12-17 08:28:00 92 0
3 条回答
写回答
取消 提交回答
  • 不行 ,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-12-18 07:46:20
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在您的情况下,如果内网的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集群了。

    2023-12-17 14:57:03
    赞同 展开评论 打赏
  • 如果您在内网环境中部署了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();
    
    2023-12-17 14:21:31
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
    The Reactive Cloud Native Arch 立即下载
    JAVA开发手册1.5.0 立即下载