2014-11-06 3 views
0

Google 클라우드 엔진에 RabbitMQ 인스턴스가 배포되었습니다. 나 또한 다른 구글 클라우드 엔진에 배치되었지만 여전히 동일한 애플리케이션에있는 hadoop 인스턴스를 가지고있다. hadoop 클러스터에서 RabbitMQ 대기열 인스턴스에 연결하려고하는데 성공하지 못했습니다.다른 클러스터/머신에서 RabbitMQ에 액세스

나는 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(); 
     } 

그러나 나는 다음과 같은 결과를 얻을 : 나는 구글 클라우드 방화벽의 포트 5672을 여는 시도

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) 

합니다. 누구든지 해결책에 대한 조언을 해주는 사람이 있습니까?

최저 제레미

+1

사용해보기 : factory.setHost (hostName); factory.setPort (portNumber); – Gabriele

+0

대단히 감사합니다! 효과가있는 – jerdeb

답변

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을 사용해야합니다.

0

설명 : setHostsetPort으로 전화하여 연결을 만들어야합니다. 응용 프로그램에서 호스트와 포트를 같은 줄에 함께 전달합니다.

관련 문제