docker下安装rabbitmq
1 查看MQ是否存在docker search rabbitmq:management2 将镜像下载下来docker pull rabbitmq:management3 发布docker镜像docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672
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端的管理界面:
会提示输入用户名和密码
刚刚设置的是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文件里面是这样的:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
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。
更多推荐
所有评论(0)