从SQS的文档中,我们可以配置消息的最大延迟时间为15分钟 - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html
假设我需要隐藏一天的消息,模式是什么? 例如。我想模仿每天的cron来做一些动作。
由于
答案 0 :(得分:8)
最简单的方法如下:
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main() {
int FPS = 10;
int nframes;
double start, now;
VideoCapture vcap(0);
if(!vcap.isOpened()) {
cout << "Error opening video stream or file" << endl;
return 0;
}
vcap.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G'));
int frame_width = vcap.get(CV_CAP_PROP_FRAME_WIDTH);
int frame_height = vcap.get(CV_CAP_PROP_FRAME_HEIGHT);
VideoWriter video("out.avi",CV_FOURCC('M','J','P','G'), FPS, Size(frame_width,frame_height), false);
namedWindow("Main",CV_WINDOW_AUTOSIZE); //create a window called
// Start time
start = (double)getTickCount();
for(;;) {
Mat frame, gray;
vcap >> frame;
cvtColor(frame, gray, cv::COLOR_BGR2GRAY);
video << gray;
imshow("Main", gray);
char c = (char)waitKey(2);
if( c == 27 ) break;
++nframes;
if (nframes==100) {
now = (double)getTickCount();
cout << "FPS: " << ++nframes/(now-start)*getTickFrequency() << endl;
start = now;
nframes = 0;
}
}
video.release();
return 0;
}
你的工作人员
SQS.push_to_queue({perform_message_at : "Thursday November 2022"},delay: 15 mins)
基本上将消息推送回具有最大延迟的队列,并仅在处理时间小于当前时间时处理它。
HTH。
答案 1 :(得分:3)
可见性超时最长可达12小时。我认为你可以在你处理消息的地方一起破解,但不要删除它,下次处理时它是12小时。所以队列中有一条消息,可见性超时为12小时。这让你有12个小时的cron。
&#XA;答案 2 :(得分:0)
两个想法。
答案 3 :(得分:0)
Cloudwatch可能是一种更好的方法。您可以在计时器中使用createEvent API,并让其触发lambda函数或对接下来发生的事情的API调用。
另一种方法是在AWS step函数中使用“等待”实用程序。
https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html
在任何情况下,除非您非常确定自己不需要超过15分钟的时间,否则SQS后门添加延迟似乎是很棘手的。