2013-03-15 21 views
10

II'm próbuje zrobić "Hello World" aplikacji stąd: RabbitMQ Hello WorldRabbitMQ "Hello World" daje przykład "Connection refused"

Oto kod mojego klasy producent:

package com.mdnaRabbit.producer; 

import com.rabbitmq.client.ConnectionFactory; 
import com.rabbitmq.client.Connection; 
import com.rabbitmq.client.Channel; 

import java.io.IOException; 

public class App { 

    private final static String QUEUE_NAME = "hello"; 

    public static void main(String[] argv) throws IOException{ 
     ConnectionFactory factory = new ConnectionFactory(); 
     factory.setHost("localhost"); 
     Connection connection = factory.newConnection(); 
     Channel channel = connection.createChannel(); 

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

I tutaj, co otrzymuję, gdy wdrażamy to:

Exception in thread "main" java.net.ConnectException: Connection refused 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 
at java.net.Socket.connect(Socket.java:579) 
at com.rabbitmq.client.ConnectionFactory.createFrameHandler(ConnectionFactory.java:445) 
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:504) 
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533) 
at com.mdnaRabbit.producer.App.main(App.java:16) 
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:601) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

Process finished with exit code 1 

Co to powoduje?

znalazłem rozwiązanie mojego problemu tutaj Error in making a socket connection

+0

W celach informacyjnych Google twierdzi, że Востронии отказано przekłada się na Odmowę połączenia. – thegrinner

+3

Czy to pytanie może pomóc w rozwiązaniu problemu? http://stackoverflow.com/questions/8939074/error-in-making-a-socket-connection – thegrinner

+0

Przykro mi, że tego nie przetłumaczyłem. Nie zauważyłem tego. no cóż, thegrinner, ten post jest sposobem na rozwiązanie mojego problemu, ale rozwiązałem go trochę wcześniej niż ten post. bardzo dziękuję. –

Odpowiedz

11

Aby poradzić sobie z tym, że zainstalowany serwer RabbitMQ. Jeśli rabbitmq-server nie jest zainstalowany, ten błąd zostanie zgłoszony.

+1

Dokładniej, ten błąd zostanie zgłoszony, jeśli RabbitMQ nie jest uruchomiony. – Smile4ever

1

mam to "Connection refused" błąd, a także:

Exception in thread "main" java.net.ConnectException: Connection refused 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
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:588) 
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:612) 
at ReceiveLogs.main(ReceiveLogs.java:14) 

I popełnił błąd, ustawiając adres IP od wewnątrz /etc/rabbitmq/rabbitmq-env.conf na niewłaściwy adres IP:

Usunąłem ten parametr konfiguracji i błąd zniknie.

1

I rozwiązać ten problem po prostu wykonując:

sudo rabbitmq-server 
1

Uruchom serwer Rabbit MQ. Plik wsadowy do uruchomienia tego serwera znajduje się w katalogu rabbitmq_server-3.6.0 \ sbin> rabbitmq-server.bat start, a następnie zadziała.

1

W moim przypadku to dał mi następujący błąd podczas próby uruchomienia serwera <Rabbit intall path>\rabbitmq_server-3.6.0\sbin>rabbitmq-server.bat start ERROR: epmd error for host Protocol: inet_tcp: register/listen error: econnrefused: nxdomain (non-existing domain)

Co zrobiłem było dodać w moim pliku host następujący wiersz: 127.0.0.1 localhost

a następnie RabbitMQ serwer uruchomiony . Po tym czasie nie pojawił się już błąd connection refuse. Mam nadzieję że to pomoże.

0

Trzeba zacząć Rabbit MQ Serever

w polu Nazwa pliku w systemie Windows: RabbitMQ usługi - start

Można użyć tego kodu: plik

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

public class NewTaskController implements Runnable { 
    private final String message; 

    private static final String EXCHANGE_NAME = "test"; 

    private static final String ROUTING_KEY = "test"; 

    public NewTaskController(final String message) { 
     this.message = message; 
    } 

    @Override 
    public void run() { 

     //getting data from application.properties 
     //for the rabbit_mq configuration 

     ResourceBundle mRB = ResourceBundle.getBundle("application"); 


     System.out.println("*****NewTaskController************"+mRB.getString("rabbitmq.port")); 
     String rabbitmq_username = mRB.getString("rabbitmq.username"); 
     String rabbitmq_password = mRB.getString("rabbitmq.password"); 
       String rabbitmq_hostname = mRB.getString("rabbitmq.hostname"); 
         int rabbitmq_port = Integer.parseInt(mRB.getString("rabbitmq.port")); 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.setUsername(rabbitmq_username); 
    factory.setPassword(rabbitmq_password); 
    factory.setHost(rabbitmq_hostname); 
    factory.setPort(rabbitmq_port); 
    Connection conn; 
    try { 
    conn = factory.newConnection(); 
    Channel channel = conn.createChannel(); 

    channel.exchangeDeclare(EXCHANGE_NAME, "direct", true); 
    String queueName = channel.queueDeclare().getQueue(); 
    System.out.println(queueName); 
    channel.queueBind(queueName, EXCHANGE_NAME, ROUTING_KEY); 
    System.out.println("Producing message: " + message + " in thread: " + Thread.currentThread().getName()); 
    channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, null, message.getBytes()); 

    try { 
     channel.close(); 
    } catch (TimeoutException e) { 
     e.printStackTrace(); 
    } 
    conn.close(); 
    } catch (IOException | TimeoutException e) { 
    e.printStackTrace(); 
    } 
} 
} 

application.properties:

rabbitmq.username=guest 
rabbitmq.password=guest 
rabbitmq.hostname=localhost 
rabbitmq.port=5672