2013-03-15 17 views
10

II'm versuchen, die "Hallo Welt" Anwendung von hier zu machen: RabbitMQ Hello WorldRabbitMQ "Hallo Welt" Beispiel gibt "Connection Refused"

Hier ist der Code meines Produzenten Klasse ist:

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

Und hier, was ich bekomme, wenn dies zu implementieren:

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 

Was verursacht das?

fand ich die Lösung für mein Problem hier Error in making a socket connection

+0

Als Referenz sagt Google, dass В соединении отказано in Connection Refused übersetzt wird. – thegrinner

+3

Hilft diese Frage mit Ihrem Problem? http://stackoverflow.com/questions/8939074/error-in-making-a-socket-connection – thegrinner

+0

Es tut mir leid, dass das nicht übersetzt. Ich habe es nicht bemerkt. Nun, der Grinder, dieser Beitrag entschlüsselt die Art, mein Problem zu lösen, aber ich habe es schon etwas früher gelöst, als diesen Beitrag zu sehen. Vielen Dank trotzdem. –

Antwort

11

damit umgehen ich RabbitMQ Server installiert. Wenn rabbitmq-server nicht installiert ist, wird dieser Fehler ausgelöst.

+1

Genauer gesagt wird dieser Fehler ausgelöst, wenn RabbitMQ nicht ausgeführt wird. – Smile4ever

1

Ich habe dies auch "Connection Refused" Fehler:

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) 

ich von innen /etc/rabbitmq/rabbitmq-env.conf an die falsche IP-Adresse einen Fehler, indem Sie die IP-Adresse gemacht hatte:

Ich habe diesen Konfigurationsparameter entfernt und der Fehler verschwindet.

1

Ich löste dieses Problem einfach durch Ausführen:

sudo rabbitmq-server 
1
Rabbit MQ-Server starten

. Die Batch-Datei zum Starten dieses Servers ist unter rabbitmq_server-3.6.0 \ sbin> rabbitmq-server.bat start vorhanden, dann wird es funktionieren.

1

In meinem Fall gab es mir die folgende Fehlermeldung versucht, den Server zu starten <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)

Was habe ich in meiner host Datei die folgende Zeile hinzu: 127.0.0.1 localhost

Und dann der rabbitmq-Server gestartet . Danach habe ich den connection refuse Fehler nicht mehr bekommen. Hoffe das hilft.

0

Sie müssen Kaninchen MQ Serever

In Windows-Dateinamen beginnen: RabbitMQ Dienst - Start

Sie diesen Code verwenden können:

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 Datei:

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