【问题标题】:Accessing RabbitMQ from different clusters/machines从不同的集群/机器访问 RabbitMQ
【发布时间】:2014-11-06 00:25:03
【问题描述】:

我在谷歌云引擎上部署了一个 RabbitMQ 实例。我还有一个 hadoop 实例部署在不同的谷歌云引擎上,但仍在同一个应用程序中。我正在尝试从 hadoop 集群连接到 RabbitMQ 队列实例,但没有成功。

我有一个 java 应用程序,它应该将项目推送到 RabbitMQ 队列,然后在同一个应用程序中接收它们。以下是连接java代码:

    ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("130.211.112.37:5672");
        try {
            connection = factory.newConnection();
            channel = connection.createChannel();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

但我得到以下结果:

java.net.UnknownHostException: 130.211.112.37:5672
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:615)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:639)
at de.unibonn.iai.eis.luzzu.io.impl.SparkStreamProcessorObserver.<clinit>(SparkStreamProcessorObserver.java:157)
at de.unibonn.iai.eis.luzzu.evaluation.Main.main(Main.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:328)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我尝试在谷歌云防火墙上打开端口 5672。请问有大神指点一下解决方法吗?

最好的 杰里米

【问题讨论】:

  • 尝试使用:factory.setHost(hostName); factory.setPort(portNumber);
  • 非常感谢!有效

标签: rabbitmq google-cloud-platform


【解决方案1】:

正如评论所写:

ConnectionFactory factory = new ConnectionFactory();
        //factory.setHost("130.211.112.37:5672"); <----- sethost accepts only the host! 
         factory.setHost("130.211.112.37"); 
         factory.setPort(5672); 
        try {
            connection = factory.newConnection();
            channel = connection.createChannel();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

默认端口是5672,所以setPort不是必须的。 仅当您更改默认端口时,您必须使用setPort

【讨论】:

    【解决方案2】:

    如此处所述:https://www.rabbitmq.com/api-guide.html 您需要调用setHostsetPort 来创建连接。在您的应用中,您在同一行同时传递主机和端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多