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文件里面是这样的:

<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。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐