0
我嘗試使用rabbitMQ,並創建連接時,我得到了下面給出的異常與輸出,我不知道出了什麼問題。 工廠工作正常,主機名,端口,用戶名和密碼設置正確,但連接每次都失敗。RabbitMQ連接異常
In main
parametres setted , now creating the connection
The host name and other params are localhost
The host name and other params are admin
The host name and other params are admin
The host name and other params are 5672
setted all the params
*Exception in thread "main" java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:347)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:516)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)
at com.TestSend.main(TestSend.java:39)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: java.lang.NoClassDefFoundError: org/apache/commons/io/input/ProxyInputStream
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:300)
... 3 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/input/ProxyInputStream
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.rabbitmq.client.impl.AMQImpl.readMethodFrom(AMQImpl.java:3205)
at com.rabbitmq.client.impl.CommandAssembler.consumeMethodFrame(CommandAssembler.java:93)
at com.rabbitmq.client.impl.CommandAssembler.handleFrame(CommandAssembler.java:158)
at com.rabbitmq.client.impl.AMQCommand.handleFrame(AMQCommand.java:87)
at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:89)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:500)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.input.ProxyInputStream
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more*
我寫的代碼是
package com;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.rabbitmq.client.ConnectionFactory;
public class TestSend {
public static void main(String[] args) throws IOException {
System.out.println("In main ");
// Setting up connection
ConnectionFactory factory;
factory = new ConnectionFactory();
String host = "localhost";
String password = "admin";
String user = "admin";
String port = "5672";
System.out.println(" parametres setted , now creating the connection");
factory.setHost(host);
factory.setPassword(password);
factory.setUsername(user);
factory.setPort(Integer.parseInt(port));
factory.setRequestedHeartbeat(30);
System.out.println("The host name and other params are " + factory.getHost());
System.out.println("The host name and other params are " + factory.getUsername());
System.out.println("The host name and other params are " + factory.getPassword());
System.out.println("The host name and other params are " + factory.getPort());
System.out.println("Setted all the params");
Connection connection;
connection = factory.newConnection();
System.out.println("Establishing the connection " + host);
String s = "Hello";
Channel channel; // This channel sends the file
channel = connection.createChannel();
System.out.println("declaring Queue now");
channel.queueDeclare("nav", true, false, false, null);
channel.basicPublish("", "nav", null, s.getBytes());
System.out.println(" seems like everything has been sent to the queue ");
System.out.println("Closing the connection");
channel.close();
connection.close();
}
}
你肯定RabbitMQ的運行:
在此罐從鏈接獲得的?用戶管理員是否有足夠的權利? – cantSleepNow
引發異常,是aClassNotFoundException。你錯過了一些依賴(org.apache.commons.io.input.ProxyInputStream)? – Gernot
是的,rabbitmq正在運行,用戶管理員有以下提到的權利 rabbitmqctl set_permissions -p/admin「。*」「。*」「。」 –