Моя программа создает сообщение в очереди SQS, а затем должна ждать, пока один из рабочих потянет работу в очереди, чтобы обработать ее. Я хочу отслеживать статус сообщения, чтобы определить, когда он будет удален, поскольку это будет моим индикатором того, что работа выполнена. Но я не могу понять, как это сделать с помощью SQS API.После создания сообщения SQS, как я могу отслеживать, когда он удаляется?
SendMessageRequest msgRequest = new SendMessageRequest(SQS_QUEUE_URL, messageBody);
SendMessageResult result = sqsClient.sendMessage(msgRequest);
String msgId = result.getMessageId();
// so, in theory, this is what I WANT to do...
while(!sqsClient.wasThisMessageDeletedYet(msgId))
Thread.sleep(1000L);
// continue, confident that because the message was deleted, I can rely upon the fact that the result of the Worker is now stashed where it's supposed to be
Что такое правильный способ сделать "wasThisMessageDeletedYet (идентификатор)"?
Спасибо, я пытаюсь уйти от использования db, потому что количество подключений, необходимых для опроса, быстро выходит из-под контроля. Когда работник заканчивает свою работу, я думаю, что лучший способ для отправителя узнать об этом факте - это ... a) рабочие помещают готовые идентификаторы msg в memcached, b) отправители создают темы SNS для каждого msg и подписки; когда Работник делает свое дело, он помещает «сделанную» msg в тему SNS, затем отправитель удаляет тему. Но я не уверен, что накладные расходы на создание и уничтожение тем SNS для каждого сообщения. Любые другие идеи? – JeremyB