Очередь авторизованных сообщений с БД типа «Ключ/Значение» с кэшированием в памяти
Формулировка задачи
На вход некоторой автоматизированной службы (АС) поступают запросы, которые необходимо обработать. Запросы поступают во входной каталог в виде файлов, имя которых начинается с IN, каждый запрос в отдельном файле. При обработке АС использует справочную информацию, которая также периодически поступает на её вход в виде отдельного файла, имя которого начинается с SP(справочник). При поступлении очередного файла справочника АС должна актуализировать свою справочную информацию. Справочная информация, используемая АС при обработке запросов – это набор неких «ключей», обработка по которым разрешена. Ключ представляет собой целое число в диапазоне от 1 до 999999, дополненное слева нулями до 6 символов. В свою очередь в запросах, поступающих на вход системы, содержится значение ключа, которое АС должна проверить на актуальность. На входе программы могут повторяться запросы с одинаковым значением ключа.
Обработка запроса системой заключается в следующем:
- Прочитать очередной файл запроса из входного каталога (IN) и определить значение ключа из имени файла.
- Если значение ключа на момент обработки актуально, переместить файл запроса в выходной каталог (OUT).
- Если значение ключа на момент обработки не актуально (отсутствует в справочнике), переместить файл запроса в каталог ошибочных файлов (ERR).
- Повторить обработку для других файлов запросов.
- Если во входном каталоге больше нет файлов запросов, необходимо организовать ожидание возобновить обработку при появлении файлов.
Ограничения
При эксплуатации АС имеются ограничения на использование оперативных вычислительных ресурсов:
- Объем справочника, который можно разместить в оперативной памяти ограничен 100 записями. Оставшаяся часть справочной информации должна быть размещена на жестком диске, объем которого не ограничивается.
- Обработка должна выполняться в многопоточном режиме, необходимо иметь возможность настройки количества потоков (например, из командной строки). Количество потоков обработки по умолчанию – 4. Дополнительные условия и ограничения После загрузки ключи сохраняют актуальность ограниченное время (по умолчанию – 1 минуту). По истечении этого времени ключ должен быть удален из справочника (или помечен как неактуальный). Во вновь поступившем на вход системы справочнике ключи могут повторяться.
Формат входных файлов
-
Файл запроса. Имя файла: INKKKKKK.NNN, где KKKKKK – значение ключа из справочника, NNN – порядковый номер. Содержимое: в рамках данной задачи не имеет значения.
-
Файл справочника. Имя файла: SPЧЧММСС.TXT, где ЧЧММСС – время формирования файла Содержимое: файл содержит список актуальных ключей в текстовом виде. В каждой строке – один ключ, строки разделены символами 0x0D, 0x0A.