Очередь заданий в цепочке обработки в Java - PullRequest
0 голосов
/ 09 июня 2011

В настоящее время я разрабатываю механизм корреляции в java, который извлекает данные из pdf-файлов и коррелирует (при необходимости генерируя оповещения) структурированные данные из реляционной базы данных.

Сосредоточив внимание на обработке pdf-файлов,Система состоит из:

Компонента, который выполняет пользовательское извлечение из PDF.

Компонента, который анализирует иногда неупорядоченные нечистые данные в требуемые структуры данных

Нормализациякомпонент, который нормализует значения для сравнения

И компонент, который взаимодействует с БД (где извлеченные данные будут вставлены вместе с остальными данными)

Компоненты должны быть повторно использованы в другихЦепочки обработки, но все они изначально будут работать в одной и той же системе.

Я думаю, что было бы разумно иметь какую-то буферизацию между компонентами, разумно ли использовать JMS Queuing, или это усложнит ситуацию?Я экспериментировал с простым объектом связанного блока блокировки, но этот объект должен передаваться между компонентами, поэтому для него требуются главные компоненты, которые управляют всем, что, я не уверен, является желательным, есть ли стандартный способ решения этой проблемы?

1 Ответ

1 голос
/ 09 июня 2011

Я бы использовал цепочечные вызовы, если у вас нет дополнительных требований.

loadPDF(new PDFExtractor(new PDFParser(new Normalizer(new DBEnricher(listener)))));

Если вам нужно несколько потоков, я обработал бы каждый файл в отдельном потоке, используя пул потоков ExecutorService.

...