![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息队列
文章平均质量分 68
学习消息队列的记录
三浪.
我只想做个与世无争的垃圾.
展开
-
RabbitMQ 应用问题 - 消息幂等性保障(思路)
RabbitMQ 应用问题 - 消息幂等性保障幂等性指一次和多次请求某一个资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。在MQ中指,消费多条相同的消息,得到与消费该消息一次相同的结果。版本号机制每次发送带version并且每次执行version = version+1那么但第二次的时候version将比对不成功,这样就避免重复消费了!...原创 2021-04-05 03:04:38 · 302 阅读 · 0 评论 -
RabbitMQ 应用问题 - 消息可靠性保障 (思路)
RabbitMQ 应用问题 - 消息可靠性保障 (思路)消息可靠性保障消息补偿机制需求:100%确保消息发送成功消息可靠性保障–消息补偿步骤(正常情况):Producer先入库发送消息给Q1Consumer会拿着Q1的消息去消费Consumer消费之后也操作自己的数据库步骤(不正常情况):Producer先入库发送消息给Q1(失败)Consumer收不到消息(操作同样失败)不会发送确认消息全套步骤:Producer先入库原创 2021-04-05 02:57:14 · 260 阅读 · 0 评论 -
RabbitMQ 高级特性 - 消息追踪
RabbitMQ 高级特性 - 消息追踪在使用任何消息中间件的过程中,难免会出现某条消息异常丢失的情况。对于RabbitMQ而言,可能是因为生产者或消费者与RabbitMQ断开了连接,而它们与RabbitMQ又采用了不同的确认机制;也有可能是因为交换器与队列之间不同的转发策略;甚至是交换器并没有与任何队列进行绑定,生产者又不感知或者没有采取相应的措施;另外RabbitMQ本身的集群策略也可能导致消息的丢失。这个时候就需要有一个较好的机制跟踪记录消息的投递过程,以此协助开发和运维人员进行问题的定位。原创 2021-04-05 02:37:54 · 529 阅读 · 0 评论 -
RabbitMQ 高级特性 - 日志与监控
RabbitMQ 高级特性 - 日志与监控日志RabbitMQ默认日志存放路径: /var/log/rabbitmq/rabbit@xxx.logxxx是主机名日志包含了RabbitMQ的版本号Erlang的版本号RabbitMQ服务节点名称cookie的hash值RabbitMQ配置文件地址内存限制磁盘限制默认账户guest的创建以及权限配置等等。web管控台监控Ready: 还有多少条没有被消费Unacked: 未确认Total:原创 2021-04-05 02:21:54 · 319 阅读 · 0 评论 -
RabbitMQ 高级特性 - 延迟队列
RabbitMQ 高级特性 - 延迟队列延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。需求:下单后,30分钟未支付,取消订单,回滚库存。新用户注册成功7天后,发送短信问候。实现方式:定时器延迟队列很可惜,在RabbitMQ中并未提供延迟队列功能。但是可以使用:TTL+死信队列 组合实现延迟队列的效果。步骤(基于RabbitMQ 高级特性 - 消息的可靠性投递)配置文件(spring-rabbitmq-producer.xml)原创 2021-04-05 02:01:46 · 237 阅读 · 1 评论 -
Rabbitmq 高级特性 - 死信队列
Rabbitmq 高级特性 - 死信队列说明:死信队列,英文缩写:DLX 。Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就是DLX。为什么叫做死信队列,翻译过来又是死信交换机?主要是其他mq没有交换机这个概念,它们就一个死信队列,但是我们的rabbitmq有交换机的概念,所以我们一般在rabbitmq说的死信队列说的都是死信交换机.消息成为死信的三种情况(面试可能会问):队列消息长度原创 2021-04-03 20:27:18 · 484 阅读 · 0 评论 -
RabbitMQ 高级特性 - TTL
RabbitMQ 高级特性 - TTLTTL 全称 Time To Live(存活时间/过期时间)。当消息到达存活时间后,还没有被消费,会被自动清除。RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。比如我们的订单系统下单,发送消息到中间件并且可以设置消息的存活时间为30分钟,如果在30分钟之内还没有被支付系统取走去支付的话,这个消息就自动清除掉.过期时间是针对发送消息的,也就是生产者...原创 2021-04-01 21:42:21 · 364 阅读 · 0 评论 -
Rabbitmq 高级特性 - 消费端限流
Rabbitmq 高级特性 - 消费端限流消费端步骤(在原有RabbitMQ 高级特性 Consumer Ack的基础)新建信监听类package com.yang.listener;import com.rabbitmq.client.Channel;import org.springframework.amqp.core.Message;import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageL原创 2021-03-31 21:21:26 · 176 阅读 · 0 评论 -
RabbitMQ 高级特性 Consumer Ack
RabbitMQ 高级特性 Consumer Ack原创 2021-03-29 21:43:51 · 393 阅读 · 0 评论 -
RabbitMQ 高级特性 - 消息的可靠性投递
RabbitMQ 高级特性 - 消息的可靠性投递使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式return 退回模式rabbitmq 整个消息投递的路径为:producer--->rabbitmq broker--->exchange--->queue--->consumer生产者--->rabbitmq中间件--->原创 2021-03-28 14:27:33 · 255 阅读 · 0 评论 -
SpringBoot 整合RabbitMQ
SpringBoot 整合RabbitMQ生产者步骤创建生产者工程(可以直接创建springboot的项目,这里并没有直接创建)引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche原创 2021-03-27 19:39:10 · 87 阅读 · 0 评论 -
Spring 整合RabbitMQ
Spring 整合RabbitMQ原创 2021-03-27 15:19:34 · 1040 阅读 · 0 评论 -
RabbitMQ的Topics 通配符模式(Topic)
RabbitMQ的Topics 通配符模式(Topic)模式说明Topic 类型与 Direct 相比,都是可以根据 RoutingKey 把消息路由到不同的队列。只不过 Topic 类型Exchange 可以让队列在绑定 Routing key 的时候使用通配符!Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert通配符规则:# 匹配一个或多个词,* 匹配不多不少恰好1个词,例如:item.# 能够匹配 item.insert.abc原创 2021-03-25 21:43:55 · 5256 阅读 · 1 评论 -
RabbitMQ的Routing 路由模式(Direct)
RabbitMQ的Routing 路由模式模式说明:队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey(路由key)消息的发送方在向 Exchange 发送消息时,也必须指定消息的 RoutingKeyExchange 不再把消息交给每一个绑定的队列,而是根据消息的 Routing Key 进行判断,只有队列的Routingkey 与消息的 Routing key 完全一致,才会接收到消息Routing 路由模式的图片图解:P:生产者,向 Excha原创 2021-03-19 22:59:36 · 496 阅读 · 0 评论 -
RabbitMQ的Publish/Subscribe 发布与订阅模式
RabbitMQ的Publish/Subscribe 发布与订阅模式原创 2021-03-16 22:24:56 · 370 阅读 · 0 评论 -
RabbitMQ的work queues模式
RabbitMQ的work queues模式原创 2021-03-14 15:29:43 · 233 阅读 · 0 评论 -
RabbitMQ 快速入门(简单模式)
RabbitMQ 快速入门(简单模式)步骤创建工程(生产者、消费者)分别添加依赖编写生产者发布消息编写消费者接受消息一. 创建工程(生产者、消费者)原创 2021-03-11 22:27:14 · 205 阅读 · 0 评论 -
RabbitMQ创建新的的用户以及新的虚拟主机
RabbitMQ创建新的的用户以及信的虚拟主机环境搭建创建一个test用户来进行学习(需要先用guest用户进行登陆)点击右上角的guest点击users点击 add a user我这里是用test为用户,test为密码,Tags选择Admin即可创建完成之后的样子此时Can access virtual hosts显示 No access(可以选择 / ,但是这里我自己创建多一个)所以我们需要点击右边导航栏的Virtual Hosts点击Add a new vir原创 2021-03-08 22:09:23 · 529 阅读 · 0 评论 -
RabbitMQ环境搭建教程
RabbitMQ环境搭建教程使用虚拟机(VMware Workstation Pro)安装centsOS7镜像(具体步骤省略)下载RabbitMQ用到的三个rpm包 (提取码:7l47)将下载好的三个rpm包,放到linux下的任意一个目录或者自己创建一个目录,我是自己创建了将下载好的三个文件放入到rabbitmq文件夹(我这里使用的是Xftp6)此时将三个rpm包进行解压(可以一个一个来也可以全部一起来,我是全部一起)rpm -ivh erlang-22.3.4.3-原创 2021-03-08 21:39:11 · 338 阅读 · 0 评论 -
RabbitMQ的工作模式
RabbitMQ的工作模式RabbitMQ提供了6种工作模式(实际只能算五种)简单模式work queuesPublish/Subscribe 发布与订阅模式Routing 路由模式Topics 主题模式RPC 远程调用模式(运程调用,不太算 MQ)我只学习前面五种...原创 2021-03-07 21:12:19 · 109 阅读 · 0 评论 -
MQ的优势和劣势以及使用MQ需要满足什么条件
MQ的优势和劣势以及RabbitMQ的工作模式MQ的优势应用解耦提高系统的容错性和可维护性异步提速提升用户体验和系统吞吐量削峰填谷提高系统稳定性MQ的劣势系统可用性降低系统引入的外部依赖越多,系统稳定性越差系统复杂度提高MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用一致性问题A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败使用MQ需要满足什么条件原创 2021-03-07 21:09:06 · 364 阅读 · 0 评论