Docker下安装RabbitMQ

本文介绍如何使用Docker部署RabbitMQ消息队列服务,并通过一个Java测试案例演示如何发送消息。案例中详细配置了RabbitMQ的运行参数,并解决了一个关于权限设置的常见错误。

1 查看MQ是否存在

docker search rabbitmq:management

2 将镜像下载下来

docker pull rabbitmq:management

3 发布docker镜像

docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

说明

命令中的【RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin】是web管理平台的用户名和密码

【 -p 15672:15672】 是控制平台docker映射到系统的对应端口

【 -p 5672:5672】 是应用程序的访问端口

端口解释可以点击看这里

4 web端的管理界面:

http://106.12.214.8:15672

会提示输入用户名和密码

刚刚设置的是admin,没有设置密码,系统会默认一个guest

5 写一个测试例子:

import org.junit.jupiter.api.Test;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class TestMq {
@Test
public void testSendMess(){
String queueName=“TEST_Q”;
try {
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(“guest”);
factory.setPassword(“guest123”);
factory.setHost(“106.12.214.8”);
factory.setPort(5672);
factory.setVirtualHost("/");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
String message = “Hello World!”;
channel.basicPublish("", queueName, null, message.getBytes());
System.out.println(" [x] Sent ‘" + message + "’");
channel.close();
connection.close();
}catch (Exception e){

    }
}

}

这个例子参考了 网站

引用包pom.xml文件里面是这样的:

org.springframework.boot spring-boot-starter-amqp 1.5.2.RELEASE

springboot中的例子 查看这个地址

上面的测试用例在执行的时候出行一个错误:

17:54:40.740 [AMQP Connection 106.12.214.8:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
java.net.SocketException: Socket Closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
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:91)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:184)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:598)
at java.lang.Thread.run(Thread.java:744)

这是因为我创建的guest,没有给权限,如果改成刚刚的admin就没问题了,admin是administrator权限,改一下gust的权限就可以了。访问成功!

查看管理界面:

这个测试消息已经发到mq。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值