Вариация проблемы одного производителя и одного потребителя - PullRequest
0 голосов
/ 17 марта 2011

У меня такая ситуация:

Один источник выполняет много запросов к БД - результаты отправляются в виде сообщений и поступают в очередь одного потребителя (сообщения поступают без специального заказа)

С другой стороны - один потребитель читает эти сообщения и хочет начать обрабатывать сообщения только тогда, когда все сообщения поступят.

Каков наилучший способ решения проблемы такого рода?

Спасибо!

1 Ответ

0 голосов
/ 17 марта 2011

Есть ли особая причина для задержки обработки до тех пор, пока все не поступят?

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

Таким образом, мы можем получать все сообщения, но только выполнять реальную работу в соответствии с вашими требованиями.

...