буферизованных канала, я туда в одной горутине складываю данные, после чего каналы закрываю. и запускаю две горутины на чтение каждого канала и выполнения некоторых операций над этими данными.
тут все ок. но затем в процессе обработки некоторые задачи могут свалиться и их нужно прогнать еще раз. Вернуть в закрытый канал я их не могу, значит нужен еще один канал куда я буду класть те, что упали. так?
Я не могу заранее знать какой буфер делать каналу, так как не знаю сколько данных придется обрабатывать снова, как можно разрулить эту проблему? Может есть какие-то очереди не ограниченные или еще чего?
Зачем тогда закрывать канал?
А прогнать ещё раз тем же воркером нельзя?
пусть каждый таск, который вы кладёте в очередь будет иметь метод Commit(), который будет сообщать продьюсеру о том, что таск завершен воркер по окончании обработки таска вызывает этот метод как только у всех тасков был вызван комит, продьюсер закрывает канал и приложение завершается
Обсуждают сегодня