Я ничего не могу сказать на тему готовых решений, но что касается логики, контекста быстродействия и высокой нагрузки — должно быть как-то так:
Есть БД, есть программа (я так понимаю, задача у вас — реализация такой программы).
1. На прогу поступает ряд новых запросов. Если ОП достаточно — помещаем их в ОП, иначе свапаем в БД.
2. Есть мультиплексор, каждую итерацию цикла — он принимает ответы на запросы об отправке, и отправляет N новых запросов. Все выходы мультиплексора следует проверять алгоритмами обработки протоколов передачи СМС, EMail. Если пришло подтверждение отправки — записуем в буфер отправленных, иначе записуем в буфер повтора отправки. Как только эти буферы заполнены, либо n раз мультиплексор не выдаёт ничего нового — записуем инфу с буферов в БД.
3. Если есть свободная ОП, считываем ряд новых запросов с БД.
Суть всего этого такова: важно иметь количество потоков / процессов, что не зависит от количества запросов (а то сервер помрет); запросы к БД — только по 1000-2000 записей (не по одной, а то помрет сервер); по максимуму использовать доступную ОП;