• 十六、RabbitMQ快速入门


    目录

    一、在centos上下载MQ镜像

    二、安装运行容器

    三、登录进入MQ

    1、添加一个新的用户

    2、新建虚拟机

    3、 为用户分配权限

    四、RabbitMQ的基本概念

    RabbitMQ中的几个概念:

    五、常见消息模型

    六、简单的消息生产与消费

    1、消费者类

    2、生产者类

    3、基本消息队列的消息发送流程:

    4、基本消息队列的消息接收流程:


    一、在centos上下载MQ镜像

    docker pull rabbitmq:3-management

    二、安装运行容器

    1. docker run \
    2. -e RABBITMQ_DEFAULT_USER=itcast \
    3. -e RABBITMQ_DEFAULT_PASS=123456 \
    4. --name mq \
    5. --hostname mq1 \
    6. -p 15672:15672 \
    7. -p 5672:5672 \
    8. -d \
    9. rabbitmq:3-management

    三、登录进入MQ

    1、添加一个新的用户

    2、新建虚拟机

    3、 为用户分配权限

    四、RabbitMQ的基本概念

    • Publisher是消息的发送者,负责将消息发送到交换机;
    • 交换机负责路由,将消息暂存到消息队列;
    • 队列负责暂存消息;
    • 消费者从队列获取消息,然后处理消息;
    • 每个虚拟主机相互之间是隐藏的,避免干扰;

    RabbitMQ中的几个概念:

    1. channel:操作MQ的工具;
    2. exchange:路由消息到队列中;
    3. queue:缓存消息;
    4. virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组;
       

    五、常见消息模型

    六、简单的消息生产与消费

    1、消费者类

    1. package cn.itcast.mq.helloworld;
    2. import com.rabbitmq.client.*;
    3. import java.io.IOException;
    4. import java.util.concurrent.TimeoutException;
    5. public class ConsumerTest {
    6. public static void main(String[] args) throws IOException, TimeoutException {
    7. // 1.建立连接
    8. ConnectionFactory factory = new ConnectionFactory();
    9. // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
    10. factory.setHost("192.168.248.152");
    11. factory.setPort(5672);
    12. factory.setVirtualHost("/");
    13. factory.setUsername("itcast");
    14. factory.setPassword("123456");
    15. // 1.2.建立连接
    16. Connection connection = factory.newConnection();
    17. // 2.创建通道Channel
    18. Channel channel = connection.createChannel();
    19. // 3.创建队列
    20. String queueName = "simple.queue";
    21. channel.queueDeclare(queueName, false, false, false, null);
    22. // 4.订阅消息
    23. channel.basicConsume(queueName, true, new DefaultConsumer(channel){
    24. @Override
    25. public void handleDelivery(String consumerTag, Envelope envelope,
    26. AMQP.BasicProperties properties, byte[] body) throws IOException {
    27. // 5.处理消息
    28. String message = new String(body);
    29. System.out.println("接收到消息:【" + message + "】");
    30. }
    31. });
    32. System.out.println("等待接收消息。。。。");
    33. }
    34. }

    2、生产者类

    1. package cn.itcast.mq.helloworld;
    2. import com.rabbitmq.client.*;
    3. import java.io.IOException;
    4. import java.util.concurrent.TimeoutException;
    5. public class ConsumerTest {
    6. public static void main(String[] args) throws IOException, TimeoutException {
    7. // 1.建立连接
    8. ConnectionFactory factory = new ConnectionFactory();
    9. // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
    10. factory.setHost("192.168.248.152");
    11. factory.setPort(5672);
    12. factory.setVirtualHost("/");
    13. factory.setUsername("itcast");
    14. factory.setPassword("123456");
    15. // 1.2.建立连接
    16. Connection connection = factory.newConnection();
    17. // 2.创建通道Channel
    18. Channel channel = connection.createChannel();
    19. // 3.创建队列
    20. String queueName = "simple.queue";
    21. channel.queueDeclare(queueName, false, false, false, null);
    22. // 4.订阅消息
    23. channel.basicConsume(queueName, true, new DefaultConsumer(channel){
    24. @Override
    25. public void handleDelivery(String consumerTag, Envelope envelope,
    26. AMQP.BasicProperties properties, byte[] body) throws IOException {
    27. // 5.处理消息
    28. String message = new String(body);
    29. System.out.println("接收到消息:【" + message + "】");
    30. }
    31. });
    32. System.out.println("等待接收消息。。。。");
    33. }
    34. }

    3、基本消息队列的消息发送流程:

    1. 建立connection
    2. 创建channel
    3. 利用channel声明队列
    4. 利用channel向队列发送消息

    4、基本消息队列的消息接收流程:

    1. 建立connection
    2. 创建channel
    3. 利用channel声明队列
    4. 定义consumer的消费行为handleDelivery()
    5. 利用channel将消费者与队列绑定
       

    注意:

    都有创建队列的原因是因为避免队列不存在;

  • 相关阅读:
    [HNCTF 2022 Week1]——Web方向 详细Writeup
    CAD如何自定义快捷键
    Excelize 发布 2.6.1 版本,支持工作簿加密
    beego---ORM相关操作
    健康打卡每日提醒累了?那就让自动化帮你---HiFlow,应用连接自动化助手
    中国各省市相关图标
    OpenAPI 3.0 规范-食用指南
    凡尔码安全巡检卡替代传统纸质记录卡
    删除链表的倒数第n个节点
    限制input框只能输入数字和小数点,并且保留小数点后两位
  • 原文地址:https://blog.csdn.net/icbbm/article/details/134527309