当前位置: 首页 > news >正文

十六、RabbitMQ快速入门

目录

一、在centos上下载MQ镜像

二、安装运行容器

三、登录进入MQ

1、添加一个新的用户

2、新建虚拟机

3、 为用户分配权限

四、RabbitMQ的基本概念

RabbitMQ中的几个概念:

五、常见消息模型

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

1、消费者类

2、生产者类

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

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


一、在centos上下载MQ镜像

docker pull rabbitmq:3-management

二、安装运行容器

docker run \-e RABBITMQ_DEFAULT_USER=itcast \-e RABBITMQ_DEFAULT_PASS=123456 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management

三、登录进入MQ

1、添加一个新的用户

2、新建虚拟机

3、 为用户分配权限

四、RabbitMQ的基本概念

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

RabbitMQ中的几个概念:

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

五、常见消息模型

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

1、消费者类

package cn.itcast.mq.helloworld;import com.rabbitmq.client.*;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.248.152");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("itcast");factory.setPassword("123456");// 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("等待接收消息。。。。");}
}

2、生产者类

package cn.itcast.mq.helloworld;import com.rabbitmq.client.*;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.248.152");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("itcast");factory.setPassword("123456");// 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("等待接收消息。。。。");}
}

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

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

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

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

注意:

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

相关文章:

  • 开源更安全? yum源配置/rpm 什么是SSH?
  • Vue 2.0中引入的类型检查Flow
  • TypeError: expected np.ndarray (got Tensor)解决办法
  • 【机器学习基础】对数几率回归(logistic回归)
  • elementplus DateTimePicker 日期范围选择器 设置默认时间范围为当前月的起始时间到结束时间
  • pytorch下载离线包的网址
  • 设置指定时间之前的时间不可选
  • kubernetes测试部署一个nginx
  • 【自学记录】深度学习进阶:自然语言处理(第一章 神经网络的复习)
  • Linux 启动停止重启jar包shell脚本
  • 【2023云栖】陈守元:阿里云开源大数据产品年度发布
  • 【数据库】你听说过矢量数据库吗?
  • 机器学习算法——集成学习
  • Vue项目Jenkins自动化部署
  • Golang中读写CSV文件的全面指南
  • Google 是如何开发 Web 框架的
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [LeetCode] Wiggle Sort
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Hibernate【inverse和cascade属性】知识要点
  • Hibernate最全面试题
  • HTTP那些事
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Median of Two Sorted Arrays
  • node-glob通配符
  • spring security oauth2 password授权模式
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • ubuntu 下nginx安装 并支持https协议
  • unity如何实现一个固定宽度的orthagraphic相机
  • 编写符合Python风格的对象
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 和 || 运算
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 通过几道题目学习二叉搜索树
  • 新书推荐|Windows黑客编程技术详解
  • 一文看透浏览器架构
  • 追踪解析 FutureTask 源码
  • 《码出高效》学习笔记与书中错误记录
  • ​iOS实时查看App运行日志
  • #《AI中文版》V3 第 1 章 概述
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (¥1011)-(一千零一拾一元整)输出
  • (12)目标检测_SSD基于pytorch搭建代码
  • (二)pulsar安装在独立的docker中,python测试
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (顺序)容器的好伴侣 --- 容器适配器
  • (五)IO流之ByteArrayInput/OutputStream
  • (学习日记)2024.02.29:UCOSIII第二节
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)socket Aio demo
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)OpenStack Hacker养成指南