消息队列
文章平均质量分 91
稻草人0.0
一个农村大学生在大城市迷茫的流浪着...
展开
-
RabbitMQ 学习(九)-- RabbitMQ 集群
网络模式 # 子网 # 网关 # docker 网络名称 $ docker network create \ --driver bridge \ --subnet 192.170 .0.0/16 \ --gateway 192.170 .0.1 \ rabbitmqClusterNet # 查看 docker 网络 $ docker network ls。原创 2022-09-01 00:08:12 · 1523 阅读 · 0 评论 -
RabbitMQ 学习(八)-- 幂等性、优先队列、惰性队列
举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。消费者在消费 MQ 中的消息时,MQ 已把消息发送给消费者,消费者在给MQ 返回 ack 时网络中断, 故 MQ 未收到确认信息,该条消息会重新发给其他的消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已成功消费了该条消息,造成消费者消费了重复的消息。命令,天然具有幂等性。原创 2022-08-23 23:08:26 · 170 阅读 · 0 评论 -
RabbitMQ 学习(七)-- 高级发布确认
在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?...原创 2022-08-12 00:13:35 · 678 阅读 · 0 评论 -
RabbitMQ 学习(六)-- 延迟队列
消息可靠发送、消息可靠投递、死信队列来保障消息至少被消费一次以及未被正 确处理的消息不会被丢弃。另外,通过 RabbitMQ 集群的特性,可以很好的解决单点故障问题,不会因为 单个节点挂掉导致延时队列不可用或者消息丢失。 当然,延时队列还有很多其它选择,比如利用 Java 的 DelayQueue,利用 Redis 的 zset,利用 Quartz 或者利用 kafka 的时间轮,这些方式各有特点,看需要适用的场景。...原创 2022-08-10 23:18:29 · 267 阅读 · 0 评论 -
RabbitMQ 学习(五)-- 死信队列
DLX,全称为 Dead Letter Exchanges , 可以称之为死信交换机,也有人称之为死信邮箱。当消息在一个队列中变成死信(dead message)之后,它能被重新发送到另一个交换机中,这个交换机就是 DLX ,绑定 DLX 的队列就称之为死信队列。应用场景: 为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中。还比如说: 用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。消息变成死信的原因:消费者使用 或原创 2022-08-05 00:14:55 · 461 阅读 · 0 评论 -
RabbitMQ 学习(四)-- 交换机(发布/订阅、路由、主题模式)
交换机发布订阅模式:前面的学习每个任务都是都恰好交付给一个消费者(工作进程)。我们为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。其中我们会启动两个消费者,其中一个消费者接收到消息后把日志存储在磁盘,另外一个消费者接收到消息后把消息打印在屏幕上,事实上第一个程序发出的日志消息将。...原创 2022-08-03 23:47:20 · 1551 阅读 · 0 评论 -
RabbitMQ 学习(四)-- Publisher Confirms(发布确认模式)
一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker回传给生产者的确认消息中delivery-tag域包含了确认消息的序列号,此外broker也可以设置basic.ack的multiple域,表示到这个序列号之前的所有消息都已经得到了处理。,也就是发布一个消息之后只有它被确认发布,后续的消息才能继续发布。.........原创 2022-08-01 22:02:55 · 1874 阅读 · 0 评论 -
RabbitMQ 学习(三)-- Work Queues(工作模式)
工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。.........原创 2022-07-31 23:20:28 · 295 阅读 · 0 评论 -
RabbitMQ 学习(二)-- Hello World(简单模式)
在下图中,“P”是我们的生产者,“C”是我们的消费者。中间的框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。原创 2022-07-31 23:10:42 · 146 阅读 · 0 评论 -
RabbitMQ 学习(一)-- 概念和安装
RabbitMQ学习。原创 2022-07-27 00:17:34 · 192 阅读 · 0 评论 -
消息队列学习 -- 概念
在计算机科学领域,消息队列和邮箱都是软件工程组件,通常用于进程间或同一进程内的线程通信。它们通过队列来传递消息-传递控制信息或内容,群组通信系统提供类似的功能。消息队列(消息中间件)就是一个使用队列来通信的组件。......转载 2022-07-25 22:06:42 · 199 阅读 · 0 评论