连接线上 RabbitMQ 报错、服务器 Docker 安装 RabbitMQ
后面有 docker 上安装 RabbitMQ 的教程
连接报错
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.nio.charset.StandardCharsets;
/**
* @author <a href="https://github.com/lieeew">leikooo</a>
* 生产者
*/
public class SingleProducer {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
// 不需要加 http:// 或者 https://
factory.setHost("服务器 IP");
factory.setUsername("lieeew");
factory.setPassword("密码如果有的话");
try (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(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
报错信息
19:09:11.432 [main] DEBUG com.rabbitmq.client.impl.ConsumerWorkService - Creating executor service with 12 thread(s) for consumer work service
Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:385)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:65)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:160)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1216)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1173)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1131)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1294)
at com.leikooo.yubi.mq.SingleProducer.main(SingleProducer.java:22)
19:09:11.706 [AMQP Connection 1.117.228.86:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occurred
java.net.SocketException: Socket Closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:90)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:184)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:669)
at java.lang.Thread.run(Thread.java:750)
排查一下,首先我访问 http://ip:15672 没有问题,看一眼日志也没有报错,看服务器防火墙对应的端口(15672,5672)也都开了。而且我服务器上面没有安装宝塔面板,也不存在宝塔拦截了对应的端口。经过了一系列排查问题,我发现了一处异常 No access这有点奇怪了。
经过操作之后发现,我的问题是因为创建的用户默认不能被外部连接,上图黄色的就表示没有办法被远程连接,就是这个的问题!




在 Docker 上安装 RabbitMQ
我自己先是按照文章 https://learnku.com/articles/37157 ,完成在服务器上的 Docker 安装 RabbitMQ
mkdir -p ~/data/rabbitmq
docker run -d --hostname rabbit-svr --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /data/rabbitmq:/var/lib/rabbitmq rabbitmq:management
对应参数的解释:
● - d 表示程序在后台静默运行;
● --hostname 指定 RabbitMQ 的主机名称;
● --name 指定启动的容器名称;
● -p 指定端口映射
● -v 将本地目录挂载到 Docker 容器中以实现数据持久化
● rabbitmq:management 指的是构建容器需要用到的镜像以及标签。
正常情况下,之后可以查看运行状态和日志
docker ps|grep rabbit
结果:
d6a2bd41361d rabbitmq:management "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, 15671/tcp, 0.0.0.0:25672-
第一个就是 [CONTAINER ID]
docker logs [CONTAINER ID]
docker kill 之后如何再启动
下面这个命令就是,列出所有 docker 容器
docker container ls --all

启动?!
docker start [CONTAINER ID]
附上一篇关于 docker 的文章:https://iphysresearch.github.io/blog/post/programing/docker-tutorial/
相关专栏
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
作者分享
Spring 团队开发者布道师 Josh Long,从 2011 年起每周二坚持写 This Week in Spring https://spring.io/authors/joshlong,大概 15 年半从未间断,到现在大概写了 800 期以上😱
大佬在采访里他说,写博客不是额外负担,而是逼自己整理每周所学的「强制机制」——反正本来就会刷社区动态,写出来既方便自己,也帮到别人。更重要的是 Spring 一直在变:微服务、AI……永远有新东西可聊,停一周就容易掉队。一旦养成习惯,坚持往往比重新开始更容易。
这种级别的大佬都还在用周更逼自己不掉队,我更没理由再拖了。还有之前左耳朵耗子大佬说的 ARTS 打卡,我老实说只撑了两周,真的需要捡起来了,加油✊
10
试了下 Grok CLI:curl -fsSL https://x.ai/cli/install.sh | bash 虽然功能不如 Claude Code 全,但能免费用 Grok 4.5 啊😍。一行 prompt 大概 3 分钟就生成出来了而且没有报错:" Three.js UMD 构建。正在实现完整的太阳系模拟(含自定义轨道控制,兼容本地打)"。
大伙可以访问试试:https://solar-system-seven-mocha.vercel.app/
4
彻底搞懂 Spring AI Tool Calling:从底层协议到源码执行全流程
7
别用 JWT 管理用户会话
9
没想到 Bot 占全球 HTML 流量的 50% 以上了,被这个比例给震惊到了。还有开发者在评论区说自己的网站「每天」访问量 250k 但是 Cloudflare 显示真实的用户只有 150 个😱
数据来源:https://radar.cloudflare.com/traffic#bot-vs-human
5

