当前位置: 首页 > 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将消费者与队列绑定
     

注意:

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

http://www.lryc.cn/news/237773.html

相关文章:

  • C#WPF用户控件及自定义控件实例
  • 大模型的语言能力
  • 直播岗位认知篇
  • 后端技术知识点内容-全部内容-面试宝典-后端面试知识点
  • 3.ubuntu20.04环境的ros搭建
  • 米诺地尔行业分析:预计2029年将达到14亿美元
  • 在Spring Boot中使用Thymeleaf开发Web页面
  • 2023年亚太杯数学建模思路 - 案例:感知机原理剖析及实现
  • linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)
  • 鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(上)
  • 探索Scrapy中间件:自定义Selenium中间件实例解析
  • 渗透测试--3.中间人攻击
  • nginx/html关闭网页缓存方法
  • 华为防火墙 Radius认证
  • 用spring发送http请求
  • 赴日开发工程师是做什么的?
  • Wireshark的数据包它来啦!
  • 接口测试需要验证数据库么?
  • 配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性
  • C++: int转换成LPCSTR
  • kettle官网和中文网地址
  • 纽扣电池类产品上架亚马逊澳大利站认证标准要求AS/NZS 62368
  • 网站监控的重要性及实施策略
  • 亚马逊车灯外贸出口CE认证标准办理解析
  • windows 查看防火墙设置命令使用方法
  • [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例
  • NextJS开发:解决React Hook useEffect has a missing dependency
  • 交叉编译tcpdump
  • 万字解析设计模式之 装饰者模式
  • 生成对抗网络Generative Adversarial Network,GAN