MQ(二)RabbitMQ快速入门
一、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快速入门相关推荐
- RabbitMQ(一):RabbitMQ快速入门
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括Rab ...
- 【外行也能看懂的RabbitMQ系列(一)】—— RabbitMQ快速入门篇(内含丰富实例)
系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...
- python_爬虫 16 Scrapy框架之(二)快速入门
目录 一.安装和文档: 二.快速入门: 1.创建项目: 2.目录结构介绍: 3.使用Scrapy框架爬取糗事百科段子: 使用命令创建一个爬虫: 爬虫代码解析: 修改settings.py代码: 简单运 ...
- RabbitMQ快速入门 | 帮助快速上手
♨️本篇文章记录的为RabbitMQ知识中快速入门相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬
- PyG文档之二:快速入门
快速入门 图数据常规操作 栗子1:实例化一个data 栗子2:Data的一些内置函数 标准数据集 栗子3:载入标准数据集 小批量训练 栗子4:PyG的DataLoader 数据转换 栗子5:PyG 的 ...
- RabbitMQ快速入门,5个MQ的Demo示例
RabbitMQ部署 我们在Centos7虚拟机中使用Docker来安装. 在线拉取 docker pull rabbitmq:3-management 解压 docker load -i mq.ta ...
- 学成在线--11.RabbitMQ快速入门
文章目录 一.RabbitMQ简介 二.相关知识 1.AMQP 2.JMS是什么 ? 三.RabbitMQ的工作原理 四.Hello World 1.创建Maven工程 2.生产者 3.消费者 五.总 ...
- RabbitMQ快速入门--介绍和安装
RabbitMQ部署指南 单机部署 我们在Centos7虚拟机中使用Docker来安装. 下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management 方式二:从本地 ...
- Apache Superset 1.2.0教程 (二)——快速入门(可视化王者英雄数据)
上一篇我们已经成功的安装了superset,那么该如何可视化我们的数据呢?本文将可视化王者英雄的数据,快速的入门Superset. 一.连接数据源 亦寒小说网 https://www.duxi.inf ...
最新文章
- 聚焦五大领域:浙江大学发布《重大领域交叉前沿方向2021》报告
- c语言矩阵乘法优化,c语言矩阵相乘
- Boost CRC的测试程序
- VB与Java颜色值的转换
- jquery验证表单很简单的方法
- 英雄联盟S11总决赛EDG夺冠,网友:立下的flag可以兑现了
- 组件注册@ComponentScan的自动扫描和指定扫描规则
- BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
- Java面向对象练习题继承之物种
- 浅谈Android五大布局
- python ppt自动生成目录_利用python-pptx库读写操作PPT,批量自动生成或修改的PPT
- 计算机实验报告word的应用,计算机实验报告模板.doc
- ipv6看电视的链接
- KVC原理分析及应用
- vue使用外部字体文件
- 大数据【Java开发转大数据学习路线分解】(不断细化ing)
- HTML初步认识和一些简单常用属性
- 史上最全的Android面试题集锦,大厂内部资料
- Geodetic集合(c++)
- 动态磅是怎么原理_动态地磅载力的原理与发展