Я работаю над аналогичной проблемой.Мне нужно сохранить относительно небольшую очередь на диске, потому что мне нужна возможность отложить обработку каждой записи, не рискуя потерять какие-либо данные.Мне также нужно, чтобы несколько процессов могли одновременно ставить в очередь, а другие - в очередь одновременно.
Моя текущая идея - создать очередь на основе диска, в которой каждый элемент записывается в файл, а имя файла соответствуетключ элемента.Все, что мне нужно, это реализовать простые функции добавления, блокировки, разблокировки, удаления и поиска.Простая рекомендательная блокировка файла должна быть достаточной (Unix, язык C).
Мне еще предстоит найти небольшую библиотеку, делающую это.Я думаю, что все больше и больше я буду кататься самостоятельно, так как моя проблема не очень сложна.
Я удалил SQLite, потому что не могу позволить себе блокировать всю свою очередь, потому что мне нужен высокий параллелизм (очередь будет в одной таблице).Я также исключил крупномасштабные решения, такие как stxxl или ActiveMQ.Они полностью излишни для моего проекта.Я нашел некоторое вдохновение в модуле IPC-DireQueue Perl, реализующем дисковую очередь / снятие очереди (хотя я не могу использовать ее в своем проекте).
activemq http://activemq.apache.org/enterprise-integration-patterns.html
stxxl http://stxxl.sourceforge.net/
IPC-DireQueue http://metacpan.org/pod/IPC::DirQueue