2016-03-23 131 views
0

我在vm上運行rabbitMQ服務器。 我正在關注rabbitMQ的java教程。 它工作正常,本地虛擬機上,但試圖從主機發送時,我得到一個異常rabbitMQ連接超時

Exception in thread "main" java.net.ConnectException: Connection timed out: connect 
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32) 
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:714) 
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760) 
at Send.main(Send.java:16) 

這裏發送代碼我使用:

import com.rabbitmq.client.ConnectionFactory; 
import com.rabbitmq.client.Connection; 
import java.util.concurrent.TimeoutException; 
import com.rabbitmq.client.Channel; 

public class Send { 
    private final static String QUEUE_NAME = "hello"; 

    public static void main(String[] args) throws java.io.IOException, TimeoutException { 

      ConnectionFactory factory = new ConnectionFactory(); 
      factory.setHost("192.168.198.100"); 
      factory.setPort(5672); 
      Connection connection = factory.newConnection(); 
      Channel channel = connection.createChannel(); 

      channel.queueDeclare(QUEUE_NAME, false, false, false, null); 
      String message = "Hello World from Windows!"; 
      channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 
      System.out.println(" [x] Sent '" + message + "'"); 

      channel.close(); 
      connection.close(); 

     } 
    } 

我可以在192.168 ping服務器.198.100但我無法訪問管理界面在 192.168.198.100:15672/

所以任何人都可以幫助我找出這個問題出了什麼問題? 在此先感謝。

回答

2

1.

您正在使用guestguest爲憑據,這是不允許的遠程IP。

請仔細閱讀本:Can't access RabbitMQ web management interface after fresh install 那麼你必須補充一點:

factory.setPassword("test"); 
factory.setUsername("test"); 

2.

你啓用管理界面?如果不使用:

rabbitmq-plugins enable rabbitmq_management 

3.

檢查你的防火牆配置也許端口5672和15672是關閉的。 您可以使用telnet測試端口:

telnet 192.168.198.100 5672 
Trying 192.168.198.100... 
Connected to 192.168.198.100. 
Escape character is '^]'. 

和:

telnet 192.168.198.100 15672 
Trying 192.168.198.100... 
Connected to 192.168.198.100. 
Escape character is '^]'. 
+0

謝謝你實際的服務器的防火牆端口被關閉。 –