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

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

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

展开
收起
真的很搞笑 2023-12-17 08:28:00 191 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
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

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

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