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

当消息到达SQS时,如何触发AWS Lambda(Python),在处理后从队列中删除消息?

方和宜
2023-03-14

当消息到达SQS时,如何触发AWS Lambda函数(Python),并将消息传递给HTTPendpoint,在处理API中的数据后,从SQS队列中删除消息?如何在Python lambda中实现这一点?

共有1个答案

谷梁存
2023-03-14

您可以在Lambda函数上创建一个SQS触发器来处理队列外的消息。如果该函数在批处理中成功地处理了消息,且没有任何错误,则会使用正确的权限将其从队列中删除。

 类似资料:
  • 但是,如果我的Lambda不期望任何输入,它将自己转到SQS并拉出消息,有输入有意义吗?我是否可以让它无效,或者甚至完全使用其他方法签名(当然,在本例中不实现那个接口)?

  • 我已经部署了一个AWS Lambda函数,它在SQS队列接收到消息时触发。该函数向Rest API发出请求,如果响应不是Ok,则需要再次处理SQS消息。 这就是为什么我需要将消息重新发送到队列,但我更愿意以编程方式删除SQS消息,尽管我找不到如何配置SQS。我尝试过消息保留,但似乎触发器事件会导致消息被删除。

  • 但我的却不是这样。他们正在处理OK,并将正在编码的视频保存到正确的S3存储桶中。但它们没有像应该的那样删除队列项。 我试过用各种方法发送报头,包括... 我在页面上没有输出,但尝试调用了ob_start();在起始和ob_end_flush()处;在发送报头之后,甚至尝试在任何处理之前一开始就直接执行报头。没有任何工作,消息仍然在飞行中,并在其可见性超时结束后重新传递。 救命啊! 多谢了。

  • 这就是事情。 我正在使用PHP AMQP从Rabbitmq读取结果队列,以便处理发送的每封电子邮件上的重要信息。完成后,我需要将该消息删除或标记为已写入,以便下次读取队列时,不会得到已处理的消息。 由于Rabbitmq服务器每小时发送超过10.000封电子邮件,每次我读取队列以处理结果发送时,脚本至少可以运行5分钟,以便处理队列中的所有消息,因此在完成后,在这5分钟内会发送数百条新消息。这使得我无

  • Spring Cloud AWS(1.0.0.rc2)中SimpleMessageListenerContainer类的当前实现似乎会在消息处理程序完成对消息的处理并且方法调用返回之后自动删除消息。 在我们的应用程序中,在从SQS上游队列删除消息之前,我们需要能够处理消息并等待来自下游队列的异步确认。类似于 接收SQS消息->处理消息->将消息发布到RabbitMQ(线程在此完成) 删除SQS消息