首页 > 其他分享 >消息队列:第四章:延迟检查队列

消息队列:第四章:延迟检查队列

时间:2023-01-03 19:46:49浏览次数:56  
标签:队列 扫描 用户 发送 消息 第四章 延迟

分布式事务的异步通信问题

使用分布式事务异步通信的结构,一个很大的问题就是不确定性。一个消息发送过去了,不管结果如何发送端都不会原地等待接收端。直到接收端再推送回来回执消息,发送端才直到结果。但是也有可能发送端消息发送后,石沉大海,杳无音信。这时候就需要一种机制能够对这种不确定性进行补充。

比如你给有很多笔友,平时写信一去一回,但是有时候会遇到迟迟没有回信的情况。那么针对这种偶尔出现的情况,你可以选择两种策略。一种方案是你发信的时候用定个闹钟,设定1天以后去问一下对方收没收到信。另一种方案就是每天夜里定个时间查看一下所有发过信但是已经一天没收到回复的信。然后挨个打个电话问一下。

第一种策略就是实现起来就是延迟队列,第二种策略就是定时轮询扫描。

二者的区别是延迟队列更加精准,但是如果周期太长,任务留在延迟队列中时间的就会非常长,会把队列变得冗长。比如用户几天后待办提醒,生日提醒。

那么如果遇到这种长周期的事件,而且并不需要精确到分秒级的事件,可以利用定时扫描来实现,尤其是比较消耗性能的大范围扫描,可以安排到夜间执行。

延迟队列
什么是延迟队列?

一般的队列,消息一旦入队了之后就会被消费者马上消费。

延迟队列就是进入该队列的消息会被延迟消费。
可以做什么?

1、延迟消费。比如:

用户生成订单之后,需要过一段时间校验订单的支付状态,如果订单仍未支付则需要及时地关闭订单。
用户注册成功之后,需要过一段时间比如一周后校验用户的使用情况,如果发现用户活跃度较低,则发送邮件或者短信来提醒用户使用。

2、延迟重试。比如消费者从队列里消费消息时失败了,但是想要延迟一段时间后自动重试。

如果不使用延迟队列,那么我们只能通过一个轮询扫描程序去完成。这种方案既不优雅,也不方便做成统一的服务便于开发人员使用。但是使用延迟队列的话,我们就可以轻而易举地完成。

 

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120534819

标签:队列,扫描,用户,发送,消息,第四章,延迟
From: https://www.cnblogs.com/wangchuanxinshi/p/17023189.html

相关文章

  • 【队列】LeetCode 232. 用栈实现队列
    题目链接232.用栈实现队列思路设置一个主栈mainStack和一个辅助栈assistantStack,在进行入队的时候,将mainStack中的元素全部放入assistantStack中,再将x入队,然......
  • 【队列】LeetCode 225. 用队列实现栈
    题目链接225.用队列实现栈思路设置一个主队列mainQueue和一个辅助队列assistantQueue,在进行压栈的时候,将mainQueue中的元素全部放入assistantQueue中,再将x压......
  • 消息队列:第五章:RabbitMQ的使用
    第一步:使用之前先安装好RabbitMQ,建议安装在linux系统下安装配置RabbitMQ:https://blog.csdn.net/qq_33450681/article/details/85339315第二步:在配置文件下配置rabbitmq:......
  • Redis实现消息队列
    异步消息队列说道消息队列,你肯定会想到Kafka、Rabbitmq等消息中间件,这些专业的消息中间件提供了很多功能特性,当然他的部署使用维护都是比较麻烦的。如果你对消息队列没那......
  • kafka学习笔记03消息队列的两种模式
     ①点对点模式  该种模式就是消费者会自动消费消息,消息收到之后会向消息队列进行确认收到消息,然后将该数据进行删除。 ②发布/订阅模式  可以有多个的topic,topic......
  • Linux网络第四章:SSH远程管理及通过SSH实现服务器之间的免密连接
    目录一、SSH远程管理基础1、ssh协议2、ssh原理3、配置文件解析4、登录方法5、使用ssh协议传输的命令二、免密连接的实现1、免密连接原理 2、免密实现环境准备3......
  • Codeforces 1373 D. Maximum Sum on Even Positions 做题记录(单调队列)
    因为只能转一个子数组,很显然转长度为奇数的子数组,对最大化答案是没有意义的(偶数位的数字之和不会变化)。因此只考虑转偶长度的子数组。转动偶数长度的子数组,相当于......
  • netcore下RabbitMQ队列、死信队列、延时队列及小应用
    关于安装rabbitmq这里一笔掠过了。下面进入正题:1.新建aspnetcorewebapi空项目,NormalQueue,删除controllers文件夹已经无关的文件,这里为了偷懒不用console控制台:public......
  • 数据结构 玩转数据结构 8-1 什么是优先队列
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13738 1重点关注1.1什么是优先队列普通队列:FIFO优先队列:出队顺序和入队顺序无关......
  • 消息队列+串口事件
    #include<stdio.h>#include"freertos/FreeRTOS.h"#include"freertos/task.h"#include"driver/ledc.h"#include"esp_err.h"#include"string.h"#include"esp_l......