RabbitMQ

单机部署

我们在Centos7虚拟机中使用Docker来安装。

下载镜像

在线拉取

docker pull rabbitmq:3.8-management

从本地加载 链接:https://pan.baidu.com/s/1yMDQViV42Uoa7o9OOh1L8w?pwd=fvbp 
提取码:fvbp 
上传到虚拟机中后,使用命令加载镜像即可:

docker load -i mq.tar

安装MQ

执行下面的命令来运行MQ容器:

docker run \
 -e RABBITMQ_DEFAULT_USER=jiajia\
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management

技术对比:

MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。

比较常见的MQ实现:

  • ActiveMQ

  • RabbitMQ

  • RocketMQ

  • Kafka

几种常见MQ的对比:

 追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

RabbitMQ中的一些角色:

  • publisher:生产者

  • consumer:消费者

  • exchange个:交换机,负责消息路由

  • queue:队列,存储消息

  • virtualHost:虚拟主机,隔离不同租户的exchange、queue、消息的隔离

RabbitMQ消息模型

RabbitMQ官方提供了5个不同的Demo示例,对应了不同的消息模型:   

入门案例

简单队列模式的模型图:  

官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色:

  • publisher:消息发布者,将消息发送到队列queue

  • queue:消息队列,负责接受并缓存消息

  • consumer:订阅队列,处理队列中的消息

publisher实现

思路:

  • 建立连接

  • 创建Channel

  • 声明队列

  • 发送消息

  • 关闭连接和channel

    public class PublisherTest {
        @Test
        public void testSendMessage() throws IOException, TimeoutException {
            // 1.建立连接
            ConnectionFactory factory = new ConnectionFactory();
            // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
            factory.setHost("192.168.150.101");
            factory.setPort(5672);
            factory.setVirtualHost("/");
            factory.setUsername("itcast");
            factory.setPassword("123321");
            // 1.2.建立连接
            Connection connection = factory.newConnection();
    
            // 2.创建通道Channel
            Channel channel = connection.createChannel();
    
            // 3.创建队列
            String queueName = "simple.queue";
            channel.queueDeclare(queueName, false, false, false, null);
    
            // 4.发送消息
            String message = "hello, rabbitmq!";
            channel.basicPublish("", queueName, null, message.getBytes());
            System.out.println("发送消息成功:【" + message + "】");
    
            // 5.关闭通道和连接
            channel.close();
            connection.close();
    
        }
    }

    consumer实现

  • 代码思路:

  • 建立连接

  • 创建Channel

  • 声明队列

  • 订阅消息

public class ConsumerTest {

    public static void main(String[] args) throws IOException, TimeoutException {
        // 1.建立连接
        ConnectionFactory factory = new ConnectionFactory();
        // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
        factory.setHost("192.168.150.101");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("itcast");
        factory.setPassword("123321");
        // 1.2.建立连接
        Connection connection = factory.newConnection();

        // 2.创建通道Channel
        Channel cha

相关推荐

  1. RabbitMQ

    2024-03-10 04:52:03       62 阅读
  2. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      60 阅读
  3. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      59 阅读
  4. RabbitMQ

    2024-03-10 04:52:03       61 阅读
  5. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      49 阅读
  6. RabbitMq

    2024-03-10 04:52:03       65 阅读
  7. <span style='color:red;'>RabbitMq</span>

    RabbitMq

    2024-03-10 04:52:03      49 阅读
  8. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      45 阅读
  9. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      56 阅读
  10. <span style='color:red;'>RabbitMQ</span>

    RabbitMQ

    2024-03-10 04:52:03      42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 04:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 04:52:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 04:52:03       82 阅读
  4. Python语言-面向对象

    2024-03-10 04:52:03       91 阅读

热门阅读

  1. Rust Web框架的选择

    2024-03-10 04:52:03       36 阅读
  2. 数据库的迁移,备份,还原

    2024-03-10 04:52:03       43 阅读