1. Constantine Linnick
  2. cft

Overview

HTTPS SSH
“естовые задани€

«адание 1. реализовать многопоточную обработку очереди 
ѕроект queueing

—имулируетс€ работа одного производител€ и п€ти потребителей.
ѕроизводитель с интервалом от 1 до 5 секунды производит группу в которую входит до 10 элементов
ѕ€ть потребителей опрашивают очередь и начинают последовательную обработку элементов, обработка 
имитируетс€ случайной задержкой до 2 секунд. ≈сли количество элементов превышает 5, 
то задача возвращаетс€ в очередь на обработку.

ƒопущение: очередь с задачами имеет бесконечную емкость

«апуск 5 потребителей с уровнем логировани€ DEBUG
	java -jar queueing.jar 5 DEBUG

«адание 2. реализовать мониторинг директории 
и многопоточную обработку поступающий файлов, 
результат парсинга должен сохран€тс€ в —”Ѕƒ Oracle.

ѕри старте программы запускаютс€ мониторщик, перзистер и пул из 5 парсеров. 
ћониторщик с интервалом в 5 секунд получает список файлов в директории 
и пытаетс€ добавить их в очередь, если они еще не добавлены. ѕ€ть парсеров парс€т переданные XML 
файлы и отдают результат перзистеру. ≈сли файл обработан успешно, 
то провер€етс€ наличие идентификатора в базе. ≈сли идентификатор находитс€, 
значит файл уже был обработан, но по какой-то причине не был удален. 
¬ противном случае результат обработки сохран€етс€ в базу, а файл удал€етс€. ≈сли же файл 
неправильного формата, то он перемещаетс€ в директорию wrong с указанием проблемы.

ƒопущени€: вместо Oracle используетс€ HSQLDB, 
в случае использовани€ первого, можно было использовать пул коннектов к базе, 
а не ограничиватьс€ одним писателем в базу
≈сли запись с таким идентификатором присутствует в базе, то файл просто удал€етс€. 
“ака€ ситуаци€ может возникнуть, если приложение было завершено до того как файл удалилс€, 
но после успешного сохранени€ в базу

√енераци€ 1000 тестовых файлов в директории files
	java -cp monitor.jar com.cft.monitor.test.TestGenerator 1000 files
«апуск задани€ 2, где
	интервал мониторинга 5000 мс,
	директори€ мониторинга files
	директори€ дл€ некорректных файлов "files/wrong"
	уровень логировани€ DEBUG
	
	java -jar monitor.jar 5000 files "files/wrong" DEBUG

—борка проектов происходит командой ant в директорию dist, необходимо указать JAVA_HOME в переменных среды

—труктура проекта:
.\CFT\
	build\ директори€ дл€ сборки проектов ant-ом
	dist\ результат сборки проектов
		db\ hsqldb дл€ хранени€ результатов обработки entry.xml
		files\ файлы entry.xml
			wrong\ место назначени€ дл€ некорректных файлов Entry
		generate-monitor.bat скрипт дл€ генерации 1000 файлов в папке files, 
							 с веро€тностью 3% файл будет некорректен
		hsqldb-2.2.8.jar драйвер д€л доступа к HSQLDB
		log4j-1.2.16.jar система логировани€
		monitor.jar пакет с заданием 2
		monitor.log лог процесса обработки
		monitor.log.1 бекап лога процесса обработки
		queueing.jar пакет с заданием 1
		run-monitor.bat скрипт запуска задани€ 2
		run-queueing.bat скрипт запуска задани€ 1
	lib\ общие библиотеки
	monitor\ исходный код задани€ 2
	queueing\ исходный код задани€ 1