当前位置:   article > 正文

在docker上部署启动RabbitMQ及使用_docker 启动rabbitmq

docker 启动rabbitmq

一、docker上部署启动RabbitMQ

1、查询rabbitmq镜像

docker search rabbitmq:management

2、拉取rabbitmq镜像

docker pull rabbitmq:management

3、创建并启动容器

3.1创建和启动
docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management

其中:

  1. --hostname:指定容器主机名称
  2. --name:指定容器名称
  3. -p:将mq端口号映射到本地

3.2备选启动同时设置用户和密码

docker run -d --hostname my-rabbit --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

注意:

  1. 15672:控制台端口号
  2. 5672:应用访问端口号

此处的端口访问是有区别的,控制台端口用于管理rabbitmq,应用访问端口号为rabbitclient等应用访问。

3.3查看rabbitmq运行状况:

docker logs rabbit

4、访问

    http://localhost:15672

5、登录

    默认账户名:guest

    密码:guest

提醒,如果关闭计算机时未停止这个启动的容器,再次启动docker时会出现无法访问15672的情况,此时只需停止并移除这个容器,然后重启一次docker,重新执行启动rabbitmq容器的命令即可。

二、使用RabbitMQ

1、创建sender

a、构建消息提供者类sender

  1. package org.vertx.vertx.rabbitmq.example;
  2. import com.rabbitmq.client.Channel;
  3. import com.rabbitmq.client.Connection;
  4. import com.rabbitmq.client.ConnectionFactory;
  5. import java.io.IOException;
  6. import java.util.concurrent.TimeoutException;
  7. public class Send {
  8. private final static String QUEUE_NAME = "hello";
  9. public static void main(String[] argv)throws java.io.IOException, TimeoutException {
  10. ConnectionFactory factory = new ConnectionFactory();
  11. factory.setUsername("guest");
  12. factory.setPassword("guest");
  13. factory.setHost("localhost");
  14. factory.setPort(5672);
  15. factory.setVirtualHost("/");
  16. Connection connection = factory.newConnection();
  17. Channel channel = connection.createChannel();
  18. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  19. String message = "Hello World!";
  20. channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
  21. System.out.println(" [x] Sent '" + message + "'");
  22. channel.close();
  23. connection.close();
  24. }
  25. }

    b、启动后可查看消息队列。

    c、访问链接

    http://127.0.0.1:15672/#/queues

     可见,RabbitMQ management中name为hello的消息产生一条。


2、创建receiver

a、创建消息接收方的类receiver。

  1. package org.vertx.vertx.rabbitmq.example;
  2. import com.rabbitmq.client.*;
  3. import java.io.IOException;
  4. public class MyConsumer {
  5. private final static String QUEUE_NAME = "hello";
  6. public static void main(String[] argv) throws Exception {
  7. ConnectionFactory factory = new ConnectionFactory();
  8. factory.setUsername("guest");
  9. factory.setPassword("guest");
  10. factory.setHost("localhost");
  11. factory.setPort(5672);
  12. factory.setVirtualHost("/");
  13. factory.setConnectionTimeout(600000); // in milliseconds
  14. factory.setRequestedHeartbeat(60); // in seconds
  15. factory.setHandshakeTimeout(6000); // in milliseconds
  16. factory.setRequestedChannelMax(5);
  17. factory.setNetworkRecoveryInterval(500);
  18. Connection connection = factory.newConnection();
  19. Channel channel = connection.createChannel();
  20. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  21. System.out.println("Waiting for messages. ");
  22. Consumer consumer = new DefaultConsumer(channel) {
  23. @Override
  24. public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
  25. throws IOException {
  26. String message = new String(body, "UTF-8");
  27. System.out.println(" [x] Received '" + message + "'");
  28. }
  29. };
  30. channel.basicConsume(QUEUE_NAME, true, consumer);
  31. }
  32. }

b、启动receiver并访问链接

c、运行后可接收到消息


d、访问管理器查看消息队列

http://127.0.0.1:15672/#/queues


消息队列中hello的消息条数为0,已发送至接收方。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/401050
推荐阅读
相关标签
  

闽ICP备14008679号