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

如何实现Amazon SQS(fifo)-lambda,并逐个准确地处理消息

巩枫
2023-03-14

我有一个用例,其中有一个带有lambda函数的Amazon SQS fifo队列。我需要确保fifo仅在前一个lambda执行完成时触发lambda(事件也是按顺序发生的)。从aws文档中可以看出,fifo只支持一次处理,但它没有提到在第一条消息完全处理之前不会在lambda上推送更多事件。

我需要确保只有在前一条消息完全由lambda函数处理时才处理下一条消息。

当消息1完全由lambda处理时,是否有办法确保消息2仅由lambda处理?

共有2个答案

姬心思
2023-03-14

这其实很容易做到。由于默认情况下,它只会耗尽可用的帐户并发性,并尽可能多地并行处理消息,因此没有明确说明。

您可以通过将lambda函数的保留并发设置为1来影响这一点。这将确保同时执行的lambda函数不超过1个。

长孙波鸿
2023-03-14

fifo只支持一次处理,但它没有提到在第一条消息完全处理之前不会在lambda上推送更多事件。

SQS从不把任何东西推到任何地方。您必须轮询SQS以获取消息。当您配置Lambda与SQS的集成时,Lambda实际上是在后台运行一个进程来为您轮询SQS。

AWS FIFO队列允许您通过指定消息组ID来强制按顺序处理消息。当您为多条消息指定相同的消息组ID时,FIFO队列将一次(按先进先出)顺序仅使其中一条消息可用。只有在第一条消息从队列中删除后,第二条消息才可用,等等...

除此之外,您应该将AWS Lambda SQS集成配置为批处理大小为1,这样它就不会试图在处理之前等待多条消息可用。如另一个答案中所述,您可以将Lambda函数上的保留并发配置为1,这样一次只能运行Lambda函数的一个实例

 类似资料:
  • 在你说这是一个重复的问题或者我应该使用嵌套流生成器之前,请听我说完。 我正在设计一个社交媒体类型的应用程序。我希望用户在关注其“我的追随者帖子”集合中的帖子时能够收到更新。在该应用程序中,该应用程序将检查firebase rtdb中当前用户的以下列表(他正在跟踪的人),并列出他们的UID。 我计划使用所述列表创建一个流列表(当然是按时间排序的),并将它们合并到一个流中,然后将其输入到私有提要页面上

  • 我对Azure服务总线队列还比较陌生,正在构建一个项目,该项目需要按照消息到达的顺序(FIFO)处理队列中的消息。 使用微软的文档,我能够理解这一部分。据我所知,我需要为队列打开会话? 我所面临的困难是确定对队列执行以下一组有序任务的最佳方法/服务堆栈。 首先,让我们假设我们有一个基于先进先出的服务总线队列,它有n个消息。我怎么可能: 从队列中拾取第一条消息。 使用Azure函数处理消息。 将有效

  • 问题内容: 考虑以下代码: writer.c reader.c 我的问题是: 由于事先不知道foo和bar将有多少个字节,我如何知道要从reader.c读取多少个字节? 因为例如,如果我在reader中读取10个字节,而foo和bar小于10个字节,那么我会将它们都放在同一个变量中,而这是我不希望的。 理想情况下,我将对每个变量都具有一个读取功能,但是我又一次事先不知道数据将具有多少字节。 我考虑

  • 任何建议都将不胜感激。谢谢

  • 问题内容: 我有两个文件( file1.txt 和 file2.txt ),这些文件仅是示例。 如何合并两个文件,以创建文件 -merge_files.txt 作为示例3 我现在写ksh脚本,所以可以用ksh,awk,sed,perl一个内衬… etc合并 背景-为什么我需要合并文件: 我的目标是将 OLD文件 (存在于第一个字段中)重命名为 NEW文件 (存在于第二个字段中), 例子1 例子2

  • 如何保持一个连续的流,以“反应”新的丢弃的文件?(或其他事件,如HTTP GET请求或类似的事件)... 例如,如果我不返回PublisherBuilder的实例,而是返回一个整数,那么我的kafka主题将由一个非常巨大的整数值流填充。这就是为什么示例在发送消息时使用一些间隔... 我应该使用一些CompletationStage或CompletableFuture吗?RXJava2?使用哪个li