gpt4 book ai didi

amazon-web-services - Amazon AWS Worker 不会从 SQS 队列中删除消息

转载 作者:行者123 更新时间:2023-12-02 01:29:43 24 4
gpt4 key购买 nike

据我所知,如果我发送 200 OK header ,订阅 SQS 队列的 AWS elastic beanstalk Worker 应该会自动删除消息。

A web application in a worker environment should only listen on the local host. When the web application in the worker environment returns a 200 OK response to acknowledge that it has received and successfully processed the request, the daemon sends a DeleteMessage call to the SQS queue so that the message will be deleted from the queue. (SQS automatically deletes messages that have been in a queue for longer than the configured RetentionPeriod.) If the application returns any response other than 200 OK, then Elastic Beanstalk waits to put the message back in the queue after the configured VisibilityTimeout period. If there is no response, then Elastic Beanstalk waits to put the message back in the queue after the InactivityTimeout period so that the message is available for another attempt at processing.

但我的没有这样做。他们处理正常并将正在编码的视频保存到正确的 S3 存储桶中。但是他们并没有像他们应该的那样删除队列项目。

我已尝试通过各种方式发送 header ,包括...

http_response_code(200);

header("HTTP/1.1 200 OK");

header("HTTP/1.1 200 OK", true, 200);

我在页面上没有输出,但已尝试调用 ob_start();在开始和 ob_end_flush();在发送 header 之后,甚至尝试在任何处理之前只在开始时就做 header 。没有任何效果,消息仍在传输中,并在其可见性超时结束后重新传送。

我想不出删除这些消息的任何其他方法 - 工作人员(我认为)只接收消息正文,所以我什至无法亲自处理并通过其处理程序使用 API 删除消息。

帮助!

谢谢。

最佳答案

好的,我意识到这与发送或不发送响应代码无关。

代码正在发送,但用于实际清除队列项的守护进程并未运行,因为我正在为普通的 Elastic beanstalk 应用程序使用磁盘镜像(我之前一直在使用它,并假设它们是相同的 -他们不是)

为了解决这个问题,我创建了一个新的弹性 beantalk 工作应用程序,从配置> 实例中获取标准自定义 AMI ID,并在社区实例中搜索它并启动了一个新的 ec2 实例副本。

我对这个新的 Worker 样式服务器进行了自定义并制作了它的图像,获取了自定义 ID 并替换了 worker ID,关闭了 ec2 服务器并删除了我从中获取 ID 的新 worker 应用程序。

一旦我重新启动原来的应用程序,消息就会被删除。

我希望这对某些人有所帮助!

关于amazon-web-services - Amazon AWS Worker 不会从 SQS 队列中删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com