我有一系列从SQS队列中消费消息的应用程序。如果其中一个消费者由于某种原因而失败并停止消费消息,我想得到通知。最好的方法是什么?
请注意,这些队列中有些可能每2-3天只放入一个消息,因此等待队列中的消息数量触发通知不是一个好选择。
我正在寻找的是可以监视SQS队列并说“这条消息已经在这里一个小时了,没有被处理...让某人知道”的东西。
我有一系列从SQS队列中消费消息的应用程序。如果其中一个消费者由于某种原因而失败并停止消费消息,我想得到通知。最好的方法是什么?
请注意,这些队列中有些可能每2-3天只放入一个消息,因此等待队列中的消息数量触发通知不是一个好选择。
我正在寻找的是可以监视SQS队列并说“这条消息已经在这里一个小时了,没有被处理...让某人知道”的东西。
我脑海中想到的可能解决方案(可能不是最优雅的)完全不需要使用CloudWatch(根据OP的评论,所需跟踪不能通过CloudWatch警报实现)。假设您有要在Service中处理的队列,并且接收方通过长轮询实现。运行一个Lambda函数(比如每小时一次),监听队列并读取消息,但永远不删除消息(Service在处理完成后删除消息)。在队列上设置最大接收次数为任意值,假设为3。如果Lambda函数运行了3次且三次都有消息存在于队列中,则该消息将被推送到死信队列(如果设置了重试策略则会自动推送)。每当新消息被推送到死信队列时,这是一个很好的指示器,表明您的服务要么宕机要么无法快速处理请求。所有变量都可以根据您的需求进行更改