2014-11-06 26 views
0

我有一个部署在谷歌云引擎上的RabbitMQ实例。我还有一个hadoop实例部署在不同的谷歌云引擎上,但仍然在同一个应用程序中。我试图从hadoop集群连接到RabbitMQ队列实例,但没有成功。从不同的集群/机器访问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。有没有人有解决方案的一些指针?

最佳 杰里米

+1

尝试使用: factory.setHost(hostName); factory.setPort(portNumber); – Gabriele 2014-11-07 13:18:18

+0

非常感谢!那工作 – jerdeb 2014-11-07 14:10:18

回答

0

至于写给评论:

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