一、RabbitMQ 概述和安装

RabbitMQ 是基于 Erlang 语言开发的开源消息通信中间件

1. RabbitMQ的结构和概念

RabbitMQ中的几个概念:

(1)channel:操作MQ的工具

(2)exchange:路由消息到队列中

(3)queue:缓存消息

(4)virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组

二、常见消息模型

MQ的官方文档中给出了5个 MQ 的 Demo 示例,对应了几种不同的用法:

(1)基本消息队列(BasicQueue)

(2) 工作消息队列(WorkQueue)

(3)发布订阅(Publish、Subscribe),又根据交换机类型不同分为三种:

1️⃣Fanout Exchange:广播

2️⃣Direct Exchange:路由

3️⃣Topic Exchange:主题

三、快速入门

1. HelloWorld 案例

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

(1)publisher:消息发布者,将消息发送到队列 queue

(2)queue:消息队列,负责接受并缓存消息

(3)consumer:订阅队列,处理队列中的消息

(1)基本消息队列的消息发送流程:

1️⃣建立 connection

2️⃣创建 channel

3️⃣利用 channel 声明队列

4️⃣利用 channel 向队列发送消息

public class PublisherTest {@Testpublic 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.创建通道ChannelChannel 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();}
}

(2)基本消息队列的消息接收流程:

1️⃣建立 connection

2️⃣创建 channel

3️⃣利用 channel 声明队列

4️⃣定义 consumer 的消费行为 handleDelivery()

5️⃣利用 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.创建通道ChannelChannel channel = connection.createChannel();// 3.创建队列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.订阅消息channel.basicConsume(queueName, true, new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties, byte[] body) throws IOException {// 5.处理消息String message = new String(body);System.out.println("接收到消息:【" + message + "】");}});System.out.println("等待接收消息。。。。");}
}

MQ(二)RabbitMQ快速入门相关推荐

  1. RabbitMQ(一):RabbitMQ快速入门

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括Rab ...

  2. 【外行也能看懂的RabbitMQ系列(一)】—— RabbitMQ快速入门篇(内含丰富实例)

    系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...

  3. python_爬虫 16 Scrapy框架之(二)快速入门

    目录 一.安装和文档: 二.快速入门: 1.创建项目: 2.目录结构介绍: 3.使用Scrapy框架爬取糗事百科段子: 使用命令创建一个爬虫: 爬虫代码解析: 修改settings.py代码: 简单运 ...

  4. RabbitMQ快速入门 | 帮助快速上手

    ♨️本篇文章记录的为RabbitMQ知识中快速入门相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬

  5. PyG文档之二:快速入门

    快速入门 图数据常规操作 栗子1:实例化一个data 栗子2:Data的一些内置函数 标准数据集 栗子3:载入标准数据集 小批量训练 栗子4:PyG的DataLoader 数据转换 栗子5:PyG 的 ...

  6. RabbitMQ快速入门,5个MQ的Demo示例

    RabbitMQ部署 我们在Centos7虚拟机中使用Docker来安装. 在线拉取 docker pull rabbitmq:3-management 解压 docker load -i mq.ta ...

  7. 学成在线--11.RabbitMQ快速入门

    文章目录 一.RabbitMQ简介 二.相关知识 1.AMQP 2.JMS是什么 ? 三.RabbitMQ的工作原理 四.Hello World 1.创建Maven工程 2.生产者 3.消费者 五.总 ...

  8. RabbitMQ快速入门--介绍和安装

    RabbitMQ部署指南 单机部署 我们在Centos7虚拟机中使用Docker来安装. 下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management 方式二:从本地 ...

  9. Apache Superset 1.2.0教程 (二)——快速入门(可视化王者英雄数据)

    上一篇我们已经成功的安装了superset,那么该如何可视化我们的数据呢?本文将可视化王者英雄的数据,快速的入门Superset. 一.连接数据源 亦寒小说网 https://www.duxi.inf ...

最新文章

  1. 聚焦五大领域:浙江大学发布《重大领域交叉前沿方向2021》报告
  2. c语言矩阵乘法优化,c语言矩阵相乘
  3. Boost CRC的测试程序
  4. VB与Java颜色值的转换
  5. jquery验证表单很简单的方法
  6. 英雄联盟S11总决赛EDG夺冠,网友:立下的flag可以兑现了
  7. 组件注册@ComponentScan的自动扫描和指定扫描规则
  8. BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
  9. Java面向对象练习题继承之物种
  10. 浅谈Android五大布局
  11. python ppt自动生成目录_利用python-pptx库读写操作PPT,批量自动生成或修改的PPT
  12. 计算机实验报告word的应用,计算机实验报告模板.doc
  13. ipv6看电视的链接
  14. KVC原理分析及应用
  15. vue使用外部字体文件
  16. 大数据【Java开发转大数据学习路线分解】(不断细化ing)
  17. HTML初步认识和一些简单常用属性
  18. 史上最全的Android面试题集锦,大厂内部资料
  19. Geodetic集合(c++)
  20. 动态磅是怎么原理_动态地磅载力的原理与发展

热门文章

  1. 中科院大学计算机科学与技术王伟强,李振宇 - 中国科学院大学 - 计算机科学与技术学院...
  2. Java 核心技术 - JVM
  3. 腾讯御安全深度解析新型流量盗刷病毒家族
  4. 软件测试 | 白盒的测试方法
  5. JSON.parse和evel的区别
  6. 算法设计与分析期末总结
  7. 【易语言界面开发系列教程之(EX_UI使用系列教程 ——1-8节)】
  8. CC(Smart3D)航拍影像结合激光雷达创建实景三维模型(视频教程可下载)
  9. 好用的音视频剪辑软件综述
  10. javax,java