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