问题描述:
Exception in thread "main" java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:124)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:120)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:379)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:63)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:138)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:973)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:932)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:890)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1044)
at com.sessert.util.ConnectionUtil.getConnection(ConnectionUtil.java:20)
at com.sessert.rabbitmq.Producter.main(Producter.java:20)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:443)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:321)
... 8 more
Caused by: java.io.EOFException
at java.io.DataInputStream.readUnsignedByte(Unknown Source)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:602)
at java.lang.Thread.run(Unknown Source)
解决方案:
首先开启web管理 rabbitmq-plugins enable rabbitmq_management
使用http://localhost:15672浏览器访问。
第一步:find / -name "rabbitmq.config*"
–>找到到rabbitmq.config.example文件
打开这个文件:vi /usr/share/doc/rabbitmq-server-3.7.4/rabbitmq.config.example
第二步:修改这个文件如下图
退出 并保存:wq
第三部:将该文件移动到etc/rabbitmq文件夹下并重命名为rabbitmq.config
第四步:重启rabbitmq服务service rabbitmq-server restart
需要注意的是
开启web管理使用的是HTTP协议而java远程访问rabbitmq服务使用的是AMQP协议!
附带java连接工具类代码
public class ConnectionUtil {
public static Connection getConnection () throws Exception{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.43.93");//虚拟机的localhost
factory.setPort(5672);
factory.setUsername("hanyuanLiu");
factory.setPassword("hanyuanLiu");
factory.setVirtualHost("/testme");//设置虚拟主机类似于数据库实例
return factory.newConnection();
}
}
至此问题解决
版权声明:本文为weixin_39393393原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。