你真的了解RabbitMQ消息队列吗
五种常见消费模型总的来说,不同的消息队列模型适用于不同的场景和需求。简单队列模型适合于点对点通信;工作队列模型适用于任务分配和负载均衡;发布/订阅模型适用于消息广播和解耦;路由模型适用于动态消息路由和选择性投递;主题模型适用于灵活的消息路由和过滤。根据具体的业务需求和系统架构,合理选择适用的消息队列模型可以提高系统的可扩展性、可靠性和性能。
简单队列模型简单队列模型(Simple Queue Model)是最基础的RabbitMQ模型。它包括单个生产者和单个消费者。生产者将消息发送到一个队列中,然后消费者从队列中读取消息并处理。这种模式不适用于多个消费者或消息广播,因为一旦消息被一个消费者接收,它就会从队列中删除。
适用场景优点缺点代码示例
单生产者和单消费者之间的点对点通信。
系统中只有一个进程或线程可以处理消息。例如,一个后端服务向另一个后端服务发送消息,或者一个客户端将任务发送给服务器
实现简单,易于理解和部署
可以提供一些基本的可靠性保证,例如消息确认和持久化
不支持并发消费
不支持多个消费者共同消费一个队列
123456789101112131415161718192 ...
SpringBoot中如何使用RabbitMQ消息队列
前言
该文章,列举三种调用RabbitMQ消息队列的方式,分别是:【Java原生代码调用】【Spring Boot starter amqp】【Spring Cloud Stream调用】
使用RabbitMQ首先确保已经启用RabbitMQ消息队列。
如果没有启用或还没安装RabbitMQ,可以先了解【RabbitMQ在Linux下载安装及部署】
记得把防火墙的端口【5672、15672】放开
JAVA原生代码调用
创建了一个ConnectionFactory来指定与RabbitMQ服务器的连接信息
通过factory.newConnection()获取一个连接对象。
在连接上创建一个通道(channel)并声明一个队列。
向队列中发布消息/接收消息
关闭通道和连接(生产者)
引入Maven依赖123456789101112<!-- amqp clien --><dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</ar ...
Linux中遇到的一些报错问题
Nginx篇make: * No rule to make target…
展开查看
make: *** No rule to make target “build”, needed by “default”. Stop.make:***没有规则可制作目标“build”,由“default”需求。停止。make:*** 没有规则可制作目标“instal1”。停止原因:缺少依赖,需要先更新下yum,再下载所需要的依赖解决方案如下:1234# 更新yumyum update# 下载依赖yum -y install gcc gcc-c++ automake autoconf libtool openssl openssl-devel gd gd-devel pcre pcre-devel make
更换yum源地址
展开查看
`Invalid configuration value: failovermethod= ...
消息队列(MQ)究竟是什么
MQ是什么?MQ 通常指的是消息队列(Message Queuing)
它是一种用于在应用程序之间传递消息的技术,可以实现异步通信,允许不同组件之间解耦合,提高系统的可伸缩性和可靠性。
在消息队列系统中,消息由生产者发送并排队,消费者按照一定的顺序从队列中读取并处理这些消息。
这种设计模式使得发布者和订阅者之间不需要相互了解,各自独立工作,提高了系统的灵活性和扩展性。
MQ的组成是什么?消息生产者、消息消费者、消息队列、消息通道、消息代理、管理和监控工具
详情介绍
消息生产者(Producer)消息生产者是向消息队列发送消息的组件或应用程序。它们负责创建消息并将其发送到队列中。消息消费者(Consumer)消息消费者是从消息队列中接收并处理消息的组件或应用程序。它们订阅队列并等待接收消息,一旦有消息可用,消费者会将其取出并进行处理。消息队列(Message Queue)消息队列是消息在内存或持久化存储中的缓冲区或容器。它们接收来自消息生产者的消息,并将其保存在队列中,以等待消息消费者处理。消息通道(Message C ...
RabbitMQ在Linux下载安装及部署
RabbitMQ介绍RabbitMQ 是一个开源的消息队列(MQ)
最初由Rabbit Technologies开发,并使用Erlang编程语言编写。
它实现了高级消息队列协议(AMQP),是一个功能丰富、灵活可靠的消息中间件。
安装环境PS:RabbitMQ支持的版本及环境,新旧版本是有差异的,先检查一下系统环境是否支持安装安装的版本
文章的安装环境:
系统版本:Linux CentOS Stream 8 64位
内核:4.18.0-348.7.1.el8_5.x86_64
Erlang版本:erlang-26.2.2-1.el8.x86_64.rpm
RabbitMQ版本:rabbitmq-server-3.13.0-1.el8.noarch.rpm
1234# 查看Linux系统版本lsb_release -a# 查看Linux内核版本uname -r
Erlang的安装下载下载ErlangRabbitMQ开发语言是Erlang,安装RabbitMQ需要Erlang环境,所以需要先安装Erlang【RabbitMQ和Erlang版本对照表】【Erlang 介绍地址】 ...
SpringBoot中如何使用基于Swagger的Knife4j接口文档
前言Knife4j是一个,基于Swagger,集Swagger2和OpenAPI3为一体的增强解决方案
基于SpringFox2.x版本提供Swagger2规范的增强扩展
基于Springdoc-openapi项目提供OAS3规范的增强扩展
适配兼容SpringBoot 2.2、2.3、2.4、2.5、2.6、2.7、3.0
兼容OpenAPI 2.0/3.0
【官方使用手册API】
引入依赖123456<!-- knife4j --><dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.4.0</version></dependency>
创建Swagger配置类12345678910111213141516171819202122232425262728293 ...
SpringBoot中如何使用Swagger接口文档
前言Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger让部署管理和使用功能强大的API从未如此简单。
引入依赖12345678910<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2< ...
Linux下安装Nacos
前言Nacos 是 Dynamic Naming and Configuration Service的简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
安装启用文章中下载的版本:nacos-server-2.3.0.tar.gz
下载安装包
方法一:官网下载JDKNacos官网Nacos Github 下载
方法二:Linux命令下载:1wget https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.gz
上传服务器将下载好的nacos丢到服务器上任意一个你能找到的地方
解压找到之前丢服务器上的nacos压缩包,通过命令将其解压到/usr/local目录下
1tar -zxvf nacos-server-2.3.0.tar.gz -C /usr/local
修改配置文件1cd /usr/local/nacos/conf
新建MYSQL表利用MySQL,创建一个 nacos 数据库,导入/usr/local/nacos/conf路径下mysql- ...
【若依篇】如何运行使用RuoYi的Spring Cloud分布式项目
前言
下载项目使用若依微服务 Spring Cloud分布式版本
若依官网
若依微服务版本(RuoYi-Cloud)
若依前后端分离版本(Java + Vue)
若依前后端不分离版本(Java)
若依APP版本(Java + uniapp)
启用MYSQL数据库下载的若依项目中,有一个sql文件夹,包含分别创建四个数据库的SQL:ry_2023xxxx.sql【项目基础库】、ry_config_2023xxxx.sql【nacos配置库】、ry_seata_2021xxxx.sql【分布式库】、quartz.sql【定时任务库】ps:其中【项目基础库】和【nacos配置库】是必须引入的,剩下的两个可以根据个人需求进行创建。
创建ry-cloud数据库(项目基础库)
创建ry-config数据库(Nacos配置库)
创建ry-seata数据库(分布式库)
创建quartz数据库(定时调度任务库)
启用RedisRedis的部署及使用操作可以参考【Redis在Linux下载安装及部署】
启用Nacos
安装并使用Nacos注册中心ps ...
【Python基础篇】获取日期、处理日期
当前日期时间时间戳格式获取当前时间,时间戳格式
格式:1578879320.382141123import time print(time.time())
JSON格式获取当前日期和时间,并格式化时间戳为本地的日期和时间
格式:time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=9, tm_min=36, tm_sec=44, tm_wday=0, tm_yday=13, tm_isdst=0)123import time print(time.localtime(time.time()))
yyyy-MM-dd格式:2020-01-13123import datetime print(datetime.datetime.now().strftime('%Y-%m-%d'))
yyyy-MM-dd hh:mm:ss获取当前时间,yyyy-MM-dd hh:mm:ss 格式
格式:2020-01-13 09:39:20123import time print(time.strftime( ...