Нужно простое, устойчивое решение для единой системы очередей - PullRequest
1 голос
/ 15 марта 2011

У меня есть настольное приложение, которое напрямую связывается со службой в той же системе. Я хотел бы отделить их и использовать очередь посередине. Большинство найденных мной решений для организации очередей действительно предназначены для корпоративного использования, а не для межпроцессного взаимодействия.

Итак, мой вопрос ко всем вам: кто-нибудь из вас имел опыт работы с небольшими постоянными очередями? Я думал об использовании Apache Qpid или, возможно, запуска небольшого экземпляра MySQL в системе. Существует проект Queue for MySQL (http://q4m.github.com/)), но он выглядит немного моложе для использования в производственной системе.

1 Ответ

0 голосов
/ 14 апреля 2011

Я работаю над аналогичной проблемой.Мне нужно сохранить относительно небольшую очередь на диске, потому что мне нужна возможность отложить обработку каждой записи, не рискуя потерять какие-либо данные.Мне также нужно, чтобы несколько процессов могли одновременно ставить в очередь, а другие - в очередь одновременно.

Моя текущая идея - создать очередь на основе диска, в которой каждый элемент записывается в файл, а имя файла соответствуетключ элемента.Все, что мне нужно, это реализовать простые функции добавления, блокировки, разблокировки, удаления и поиска.Простая рекомендательная блокировка файла должна быть достаточной (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

...