Java技术学习|消息队列|初级RabbitMQ

news2025/1/18 10:03:13

学习材料声明

黑马RabbitMQ快速入门教程,快速掌握rabbitmq、springAMQP消息中间件
是非常初级的学习,听说后续的高级课程会涉及到微服务之类的,所以等学完微服务再回来学。还有redis的高级部分也涉及了微服务,所以也都暂时停止学习了。

MQ是什么?

Message Queue。
为什么会出现这个,因为当请求很多,然后要完成这个请求,需要很多的可以细分的小服务组成,那么为了及时地响应请求,我们将串行执行的服务,分为一个服务(返回请求,发送消息给消息队列),消息队列(接受消息,发送消息给约定好的其他程序完成微服务!)
这样的改进,可以让请求快速得到响应,减少用户的等待时间,可以更好地拓展需求(增加约定好的程序),当部分程序宕机后,不影响其他部分。
这也是老师视频里面同步调用和异步调用的区别。
在这里插入图片描述
修改成:
在这里插入图片描述

常见的MQ技术

Rabbit ActiveMQ RocketMQ Kafka
在选型的时候,考虑到语言的可拓展,可靠,可用,延迟等等。

如何安装docker和rabbitMQ

我也不知道教程里面的命令要在哪里执行,就直接xshell连接虚拟机,复制粘贴,最后稀里糊涂安装好了。
安装教程1
安装教程2

这里还是遇到了一个问题:报错hmall不存在,是因为在docker network ls里面没有create过。所以这行命令直接删除。
外部还是访问不到,原因是防火墙没关

[root@user 公共]# docker run \
>  -e RABBITMQ_DEFAULT_USER=itheima \
>  -e RABBITMQ_DEFAULT_PASS=123321 \
>  -v mq-plugins:/plugins \
>  --name mq \
>  --hostname mq \
>  -p 15672:15672 \
>  -p 5672:5672 \
>  -d \
>  rabbitmq:3.8-management

systemctl stop firewalld.service

第二天又不知道怎么启动rabbitMQ了。

慢慢懂了(docker存储镜像,镜像创建容器,容器就是一个又一个可以运行起来的程序。)

先看一下镜像还在不在?docker images
看一下容器是不是在运行? docker ps
镜像有,容器无,且docker run又说已有容器,就删除所有停止的容器,再docker run。最后关闭防火墙。
如何获取镜像和删除镜像
如何从已有镜像中创建容器

使用 docker container prune 命令删除所有停止的容器

[root@user 公共]# docker run \
>  -e RABBITMQ_DEFAULT_USER=itheima \
>  -e RABBITMQ_DEFAULT_PASS=123321 \
>  -v mq-plugins:/plugins \
>  --name mq \
>  --hostname mq \
>  -p 15672:15672 \
>  -p 5672:5672 \
>  -d \
>  rabbitmq:3.8-management

systemctl stop firewalld.service

如何访问?

页面上:图上的ip地址是自己的虚拟机地址。
在这里插入图片描述
java程序要访问:走的是5672端口。
在这里插入图片描述

比较不理解的virtual host这个概念

用于区分什么的?
一般是不同项目需要区分不同的虚拟主机。这样就看不到其他项目的队列,交换机之类的了。

SpringAMQP协议

将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。
但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般生产环境下我们更多会结合Spring来使用。而Spring的官方刚好基于RabbitMQ提供了这样一套消息收发的模板工具:SpringAMQP。并且还基于SpringBoot对其实现了自动装配,使用起来非常方便。

基础的模型

1.WorkQueues模型

在这里插入图片描述

2.交换机(可以复用消息给多个队列)

在这里插入图片描述

3.如何接受和发送的是Object类型

在这里插入图片描述

4.整个Java代码梳理

publisher:在配置文件中配置IP地址等等信息。发送消息。
consumer:同样需要配置信息,利用@RabbitListener来监听消息。会涉及交换机与队列的绑定代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pick-a-Pic:An open dataset of user preferences for text-to-image generation

1.introduction 1.创建了一个 数据集,每个示例包括一个提示,两个生成的图像以及一个指向首选图像的标签,或者在没有一个图像明显优于另一个时标记为平局。由真实用户创建,包括50w个示例。 2.利用真实用户偏好,训练一个评分函数,使用人类偏好数据和类似于instructGPT奖励…

我花了2元,15分钟,零基础入门了Llama3的微调。

Llama3在最新测评上已经可以接近闭源的GPT4,我们很快就可以拥有属于自己的“GPT4”了!于是,我昨天第一时间体验了Llama3的微调,成本不高,大概花了2元。 为了方便大家体验微调,我把需要的系统环境打包成了社…

递归、搜索与回溯算法:综合练习

例题一 解法: 算法思路: ⾸先,我们在第⼀⾏放置第⼀个皇后,然后遍历棋盘的第⼆⾏,在可⾏的位置放置第⼆个皇后,然后再遍历第三⾏,在可⾏的位置放置第三个皇后,以此类推&#xff0c…

鸿蒙OpenHarmony【集成三方SDK】 (基于Hi3861开发板)

OpenHarmony致力于打造一套更加开放完善的IoT生态系统,为此OpenHarmony规划了一组目录,用于将各厂商的SDK集成到OpenHarmony中。本文档基于Hi3861开发板,向平台开发者介绍将SDK集成到OpenHarmony的方法。 规划目录结构 三方SDK通常由静态库…

2024年4月最新注册香港苹果账号(Apple ID)并解决支付的教程

大陆的Apple ID仅仅能下载国内的一些APP,其实海外也有非常之多好用又好玩的APP需要大家来挖掘!发现这些海外优质APP就得需要一个海外苹果账号。这就是我今天为什么要写这篇文章的初衷! 注册香港Apple ID教程 1、首先到http://appleid.apple.com里注册一个国内的Ap…

ROS2 命令行工具---常用命令整理

本文主要介绍 ROS2 机器人操作系统的一些常用命令行工具及其使用方法,使用这些命令可以使机器人编程和调试变得更加简便。 在实际应用过程中,我们会经常用到命令行操作来辅助调试,更进一步的可以使用GUI工具辅助调试。 一、创建工作空间 跟…

数据结构——第7章 查找

1 线性表的查找 数据元素和顺序表的定义 typedef struct{KeyType key;InfoType otherinfo; }ElemType; typedef struct{ElemType *R;int length; }SSTable; 1.1 顺序查找 int Search_Seq(SSTable ST,KeyType key){ST.R[0].keykey;for(int iST.length;ST.R[i].key!key;i--);…

SQLAlchemy的使用

SQLAlchemy中filter函数的使用 https://blog.csdn.net/m0_67093160/article/details/133318889 创建临时字段 select id , CONCAT(‘内容’) AS fullname from example_table; Pandas数据类型转换_pandas转换数据类型 https://blog.csdn.net/qq_41404557/article/details/125…

用wps自带工具给图片做标注

在wps中,选中wps中的图片,右键选择【编辑】进入图片编辑器,在选项卡面板右侧选择【标注】工具,再选择【添加文本】工具,即可直接在图片上输入文字,标注完成后选择【覆盖原图】就完成标注任务。

【3200字干货】2024跨境电商5大市场:选品风向深度剖析

以下是针对马来西亚、新加坡、泰国、菲律宾和台湾这5个东南亚跨境电商市场的选品市场分析: 一、马来西亚 市场特点:马来西亚是东南亚第三大经济体,拥有年轻的消费群体和对跨境购物的偏好。网购消费力强,易上手爆单,跨…

tableau基础学习——添加标靶图、甘特图、瀑布图

标靶图 添加参考线 添加参考分布 甘特图 创建新的字段 如设置延迟天数****计划交货日期-实际交货日期 为正代表提前交货,负则代表延迟交货 步骤:创建——计算新字段 把延迟天数放在颜色、大小里面就可以 瀑布图 两个表按照地区连接 先做个条形图&…

Python构建学生信息管理系统:网站路由补充和首次运行

在之前的内容中,我们已经完成了学生信息管理系统(Student Information Management System, SIMS)的需求分析、环境搭建、数据库创建、项目结构的初始化,以及运行。正常做下来的朋友,会发现项目运行后输入http://127.0.…

vscode在json文件中添加注释

1.在设置中输入关联文件,点击添加项; 2.

ClickHouse 24.3 版本发布说明

本文字数:10774;估计阅读时间:27 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 北半球迎来春天,也是 ClickHouse 发布新版本的时候了。 发布概要 本次ClickHouse 24.3版本包含了1…

Android 系统充电动画

效果 Android获取电池充电状态是否为快充可参考. Android_source/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java private int lastBatteryStatus;private final BroadcastReceiver mBatteryChangedReceiver new BroadcastRece…

ComfyUI学习旅程

一、模型文件(Checkpoint) 首先它很大,这些文件是你从huggingface或者civitai下载而来的, 所以这些大文件如 .ckpt 或 .safetensors ,实际上包含了什么内容呢? 它包含了包含了三种不同模型的权重&#x…

【STM32F4】STM32CUMX相关环境配置

一、环境配置 我们需要以下两个软件 (一)keil5 最正统,最经典的嵌入式MCU开发环境。 该环境的配置可以看看之前的文章 所需文件如下: 当时配置的是STC8H的环境,现在基于此,重新给STM32配置环境。能让STC…

docker的默认路径存储不足

docker的默认路径存储不足 添加磁盘 [rootlocalhost ~]# fdisk -l磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳)&#xff1a…

【网络安全】网络安全协议和防火墙

目录 1、网络层的安全协议:IPsec 协议族 (1)IP 安全数据报格式 (2)互联网密钥交换 IKE (Internet Key Exchange) 协议 2、运输层的安全协议:TLS 协议 3、系统安全:防火墙与入侵检测 1、网络…

CJSON工具类

4.4.3.CJSON工具类 OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。 官方地址: https://github.com/openresty/lua-cjson/ 1)引入cjson模块: local cjson require "cjson"2)序列化: …