当前位置: 首页 > 知识库问答 >
问题:

Amazon SQS FIFO队列

别子实
2023-03-14

我们正在使用AMAZON SQS FIFO队列来处理我们应用程序的预约服务。一旦消息进入队列,它就会触发Amazon Lambda函数来管理预订过程。因为它是一个FIFO队列,所以我们确保如果有2个人请求相同的插槽,那么这个插槽将给第一个请求者。我的问题是:是否有一种方法(也许是SQS FIFO队列中的设置?)这确保了在前一条消息执行完毕之前,一条消息不会触发Amazon Lambda函数。我只是试图避免编写额外的逻辑(某种槽锁定系统),以确保在第一个完成“预订”过程之前,同一槽不会被两个背靠背的消息锁定。谢了。

共有1个答案

仲孙景胜
2023-03-14

这是我如何解决这个问题的。

我根本不建议使用SQS,您也不需要SQS提供的任何功能。

从SQS移动到Kinesis数据流,并将批处理大小设置为1以触发lambda。那会处理好的。Kinesis streams是一个FIFO。而且,与事务性FIFO SQS队列相比,Kinesis的伸缩性非常好。

如果您在lambda中有一个bug,并且您希望从流的开始返回,您可以这样做。

希望能有所帮助。

 类似资料:
  • 简介 Lumen 的队列服务给不同的后端队列提供统一的 API。队列允许你延迟处理耗时的任务,例如在远程服务器上执行任务,直到您的应用程序可以快速的处理 Web 应用程序的请求。 就像该框架的许多其他部分一样,Lumen 的队列服务跟 Laravel 的队列服务功能相同。因此,如果要了解更多关于 Lumen 的队列,则可以参阅 full Laravel queue documentation. 配

  • 简介 {tip} 现在,Laravel 为你的 Redis 队列提供了 Horizon,一个拥有漂亮的仪表盘的配置系统。 查看完整的 Horizon 文档 Horizon documentation 了解更多信息。 Laravel 队列为不同的队列后台服务提供了统一的 API,比如 Beanstalk, Amazon SQS, Redis, 甚至是关系型数据库。队列可以使你延迟处理一些耗时的任务,

  • 队列是先进先出(FIFO, First-In-First-Out)的线性表,只允许在后端(rear)进行插入操作,在前端(front)进行删除操作。

  • 问题内容: 如何同时在多个对象上“选择” ? Golang的频道具有所需的功能: 其中第一个要解除阻塞的通道执行相应的块。如何在Python中实现? 更新0 根据tux21b答案中给出的链接,所需的队列类型具有以下属性: 多生产者/多消费者队列(MPMC) 提供每个生产者FIFO / LIFO 当队列为空/完整的消费者/生产者被阻止时 此外,渠道可能会被阻塞,生产者将阻塞,直到消费者取回该物品为止

  • 主要内容:Queue 类中的属性,Queue 类中的方法在 C# 中,队列(Queue 类)与 堆栈类似,它代表了一个先进先出的对象集合,当您需要对项目进行先进先出访问时,则可以使用队列。向队列中添加元素称为入队(enqueue),从堆栈中移除元素称为出队(deque)。 Queue 类中的属性 下表列出了 Queue 类的一些常用的属性: 属性 描述 Count 获取队列中包含的元素个数 IsSynchronized 判断是否同步对队列的访问(线程安

  • 队列(Queue) 1. 队列的概念 1.1 队列的定义 队列是一种特殊的线性表,是一种运算受限的线性表。 队列是先进先出(FIFO,First In First Out)的线性表。 1.2 队列的逻辑结构和存储表示 队列的逻辑结构和线性表相同。 队列的抽象数据类型有两种典型的存储表示:基于数组的存储表示和基于链表的存储表示。 (1)基于数组的存储表示实现的队列称为顺序队列,顺序队列可以采用顺序表

  • 对列(queue)是任务间通信的一种简单实现方式,可以用来在任务间传递下数据,或者在中断与任务之间。新数据会被发送至队列尾部,在大多数情况下,队列是线程安全的先进先出(FIFO)缓冲器。当然,数据同样可以被发送至队列首部。 下面的动图演示了任务A将数据发送至队列尾部,任务B将数据取出,完成任务间数据交换: 用户模型:最大限度的简化、最高限度的灵活性 灵活性与简单性通常是两种互斥的属性,但是在fre

  • 设置 Lumen 队列组件提供一个统一的 API 集成了许多不同的队列服务,队列允许你延后执行一个耗时的任务,例如延后至指定的时间才发送邮件,进而大幅的加快了应用程序处理请求的速度。 Lumen 支持 数据库, Beanstalkd, IronMQ, Amazon SQS, Redis, null, 和 synchronous (本地开发使用) 队列驱动器. null队列驱动器会对所有的工作进行忽