Как выяснить все сообщения с определенным groupId был прочитан из очереди в SQS? - PullRequest
0 голосов
/ 13 июня 2018

Вот мое требование: я получил запрос на проверку некоторых данных / записей.Записи будут отправляться в очередь SQS для каждого запроса для дальнейшей обработки другим сервисом / компонентом.Структура сообщения выглядит следующим образом:

messageId: //a unique message id
requestId: //request id common between all messages/records for that request
record_body: {//key-value pairs}

Все отлично работает.Теперь я хочу выяснить, когда все сообщения с одинаковым идентификатором запроса были прочитаны из очереди (т. Е. Больше нет сообщений для этого идентификатора запроса).Идея, которую я имею, состоит в том, чтобы записывать каждое сообщение / запись в базу данных при каждом чтении, а затем иметь другую запланированную службу, которая может быть запущена (по облачным часам), чтобы проверить количество записей для каждого запроса и, наконец, обновить статус запроса доЗавершить, если количество записей в базе данных равно количеству записей в исходном запросе.Я просто хочу поделиться этим, чтобы увидеть, есть ли у кого-то еще такие требования и как они к ним подошли!

1 Ответ

0 голосов
/ 15 июня 2018

Как насчет этого?

Включить количество запросов и текущий запрос в очередь.Убедитесь, что запрос поступает в очередь в том же порядке.

Пример - у вас есть 4 запроса на requestId - abc

Каждый запрос будет отправлен с включенными значениями (1: 4) (2: 4) (3: 4) (4: 4) в порядке очереди.

Таким образом, когда вы читаете из очереди, вы будете читать(4: 4) последний и вы будете знать, что вы обработали все 4.

Другой способ сделать это - включить общее количество запросов в сообщение в каждое сообщение, и при обработке каждого сообщения проверять, соответствует ли оно оригиналу.один, как у вас есть общее в вашем сообщении сейчас.(путем запроса к базе данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...