RabbitMQ
文章平均质量分 79
沉泽·
心中有阳,眼里有光。
展开
-
Rabbitmq的分布式事务解决方案(十二)
一、前言1.1 简述分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。1.2 分布式事务的几种解决方案1.2.1 2PC(两阶段提交)2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。在计算机中部分关系数据库如Oracle、MySQL支持两阶段提交协议,如下图:准备阶段(P原创 2021-10-22 17:46:43 · 1987 阅读 · 1 评论 -
Rabbitmq的消息确认机制(十一)
一、前言RabbitMq提供了消息确认机制,主要分为生产者端发送消息确认和消费者端的消费消息确认。生产者端发送消息确认又分为Confirm 消息确认机制和Return 消息机制;消费者端 则分为Ack 和 Nack 机制。二、生产者端消息确认机制1.1 引入 rabbitmq 依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"原创 2021-10-14 11:58:38 · 3046 阅读 · 0 评论 -
RabbitMQ单机集群搭建(十)
一、RabbitMQ 集群介绍RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。在实际使用过程中多采取多机多实例部署方式,为了便于同转载 2021-10-12 10:50:13 · 509 阅读 · 0 评论 -
RabbitMQ持久化机制和内存磁盘的监控(九)
一、持久化机制介绍01、RibbitMQ持久化持久化就把信息写入到磁盘的过程。02、RabbitMQ持久化消息把消息默认放在内存中是为了加快传输和消费的速度,存入磁盘是保证消息数据的持久化。03、RabbitMQ非持久化消息非持久消息:是指当内存不够用的时候,会把消息和数据转移到磁盘,但是重启以后非持久化队列消息就丢失。二、RabbitMQ持久化分类RabbitMQ的持久化队列分为:1:队列持久化2:消息持久化3:交换机持久化不论是持久化的消息还是非持久化的消息都可以写入到磁盘中,转载 2021-10-11 16:09:09 · 968 阅读 · 0 评论 -
RabbitMQ设置过期时间TTL和死信队列(八)
一、概述过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。RabbitMQ可以对消息和队列设置TTL。目前有两种方法可以设置。第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。第二种方法是对消息进行单独设置,每条消息TTL可以不同。如果上述两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。消息在队列的生存时间一旦超过设置的TTL值,就称为dead message被投递到死信队列, 消费者将无法再收到该消息。第原创 2021-10-11 14:59:01 · 1269 阅读 · 0 评论 -
RabbitMQ使用场景及案例(七)
一、场景介绍可用于解耦、削峰、异步1.1 串行方式串行方式:将订单信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端public void makeOrder(){ // 1 :保存订单 orderService.saveOrder(); // 2: 发送短信服务 messageService.sendSMS("order");//1-2 s // 3: 发送email服务 emailService.sendE原创 2021-10-10 22:42:26 · 1023 阅读 · 0 评论 -
RabbitMQ支持消息的模式(六)
官网介绍参考官网:https://www.rabbitmq.com/getstarted.htmlweb界面操作03-1、简单模式 Simple界面操作流程:创建一个队列,再进入默认交换机内发起一个消息到指定队列,最后再进入队列里进行消息预览,预览时需要注意的是要选择nack…那一项进行预览,若选择automatic ack则会导致消息被消费掉,进而导致消息丢失。注意:虽然只创建了队列而未创建交换机,但队列会自动绑定一个默认交互机,该交换机类型是direct,因此在发消息时也需要指定Routin转载 2021-10-09 11:25:24 · 180 阅读 · 0 评论 -
RabbitMQ的整体架构和工作流程(五)
什么是AMQPAMQP全称:Advanced Message Queuing Protocol(高级消息队列协议)。是应用层协议的一个开发标准,为面向消息的中间件设计。AMQP生产者流转过程AMQP消费者流转过程RabbitMQ的核心组成部分01、RabbitMQ的核心组成部分核心概念:Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-serverConnection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次转载 2021-10-08 10:20:09 · 280 阅读 · 0 评论 -
RabbitMQ入门案例 - Simple 简单模式(四)
01、实现步骤1:jdk1.82:构建一个maven工程3:导入rabbitmq的maven依赖4:启动rabbitmq-server服务5:定义生产者6:定义消费者7:观察消息的在rabbitmq-server服务中的过程02、构建一个maven工程03、导入rabbitmq的maven依赖03-1:Java原生依赖<dependency> <groupId>com.rabbitmq</groupId> <artifa转载 2021-10-08 10:02:41 · 377 阅读 · 0 评论 -
基于docker安装rabbitmq(三)
一、搜索rabbitmq的docker镜像 1.1 粗略查看 docker search rabbitmq1 1.2 查看tag docker-tags rabbitmq1 二、拉取rabbitmq的docker镜像 2.1 拉取镜像 do...转载 2021-10-07 20:01:05 · 205 阅读 · 0 评论 -
RabbitMq-CentOS7下安装RabbitMq(二)
安装RabbitMq 由于rabbitmq是用erlang语言编写所以需要先安装erlang 1.在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错): [root@localhost 20190903]# yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto 完毕之后会出现如下所示: 2....转载 2021-09-26 10:55:38 · 178 阅读 · 0 评论 -
RabbitMQ-理论知识(一)
一、什么是中间件我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。中间件便是解决之道,它用自己的复杂换取了企业应用的简单。举例:1,RMI(Remote Method Invocations, 远程调用)2,Load Balancing(负载均转载 2021-09-21 08:33:45 · 408 阅读 · 0 评论