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

监视Amazon SQS延迟处理

从劲
2023-03-14

我有一系列应用程序使用来自SQS队列的消息。如果由于某种原因,这些消费者中的一个出现故障,并且停止使用消息,我希望得到通知。做这件事最好的方法是什么?

请注意,其中一些队列每2-3天只能将一条消息放入队列,因此等待队列中的消息数触发通知对我来说不是一个好的选择。

我正在寻找的是可以监视一个SQS队列并说“这个消息已经在这里一个小时了,什么都没有处理它……让某人知道。”

共有1个答案

谢璞
2023-03-14

可能的解决方案(可能不是最优雅的),它根本不需要使用CloudWatch(根据OP的评论,所需的跟踪无法通过CloudWatch警报实现)。假设您有要在服务时处理的队列,并且接收端是通过长轮询实现的。运行一个Lambda函数(例如每小时一次),监听队列并读取消息,但从不删除(服务在处理完消息后删除消息)。在队列中,将最大接收值设置为u想要的任何值,假设为3。如果Lambda函数运行了3次,并且所有三次消息都存在于队列中,则消息将被推送到死信队列(如果设置了重新驱动策略,则会自动)。每当新消息被推送到死信队列时,这是一个很好的指示,表明您的服务已经关闭,或者处理请求的速度不够快。所有变量都可以根据您的需要进行更改

 类似资料:
  • 如何在Vertx中处理延迟作业列表(实际上是数百个HTTP GET请求,到禁止快速请求主机的有限API)?现在,我正在使用此代码,它被阻止,因为Vertx一次启动所有请求。希望在每个请求之间有5秒的延迟来处理每个请求。

  • Flask 通常配合装饰器使用,装饰器使用非常简单,而且使您可以将 URL 和处理它的函数 放在一起。然而这种方法也有一种不足: 这就意味着您使用装饰器的代码必须在前面导入, 否则 Flask 将无法找到您的函数。 这对于需要很快导入的应用程序来说是一个问题,这种情况可能出现在类似谷歌的 App Engine 这样的系统上。所以如果您突然发现您的引用超出了这种方法可以处理 的能力,您可以降级到中央

  • 我们在RHEL 7.0 VM上部署了一个Java/spring/Tomcat应用程序,它使用AlejandRorivera/Embedded-RabbitMQ,一旦部署了war,它就启动Rabbitmq服务器,并连接到它。我们有多个队列用来处理和过滤事件。 流程如下所示: 我们接收到的事件->发布事件队列->侦听器类筛选事件->发布到另一个队列进行处理->我们发布到另一个队列进行日志记录。 问题是

  • top看到单个CPU 100%时,就是垂直扩展的时候了。如果需要让CPU使用率最大化,可以配置Redis实例数对应CPU数, Redis实例数对应端口数(8核Cpu, 8个实例, 8个端口), 以提高并发。单机测试时, 单条数据在200字节, 测试的结果为8~9万tps。(未实测)。 另外,对于命令的复杂度一定要关注。

  • 问题内容: 这是我的情况: 我有一个包含用户列表的页面。我通过Web界面创建一个新用户,并将其保存到服务器。服务器在elasticsearch中为文档建立索引并成功返回。然后,我被重定向到不包含新用户的列表页面,因为它可能需要1秒钟的时间才能使文档在Elasticsearch中可供搜索 elasticsearch中的近实时搜索。 elasticsearch指南说您可以手动刷新索引,但说在生产中不要

  • 问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的