Какова цель использования 2 отдельных приложений + JMS - одно приложение для загрузки данных, а другое - для отправки их при использовании JMS для постановки номеров в очередь? Являются ли оба приложения автономными приложениями или одно приложение для чтения встроено в какой-либо сервер? И последний вопрос: отслеживаются ли цифры, что они были отосланы?
В конце концов, по моему мнению, нет никакой пользы от использования JMS. Это приносит только дополнительные накладные расходы.
Давайте подведем итоги: приложение, которое отправляет номера на некоторый веб-сервер для обработки. Я предполагаю, что принимающая сторона не может обрабатывать / получать больше номеров одновременно. Я предполагаю, что база данных, из которой вы загружаете данные, является неким «доступным только для чтения» хранилищем от клиента или около того. Я предполагаю, что вы хотите отслеживать отправленные номера.
Что бы я сделал:
- объединить два приложения в одно
- создать некоторую (возможно, встроенную) БД для отслеживания обработанных чисел (это лучше, чем поддерживать какой-либо файл вручную или хранить его в памяти - в случае сбоя вы начинаете с самого начала; у db есть отличные функции, чтобы предложить)
- создать пул отправителей, которые берут, скажем, 10 цифр и отправляют его куда-нибудь
- создать устройство чтения данных, которое считывает числа в пакетном режиме (я не вижу смысла в прочтении всего в начале, что задерживает начало отправки). Это также более прослеживаемо, поскольку вы поддерживаете небольшие наборы данных. Роль считывателя также заключается в том, чтобы отслеживать незанятых отправителей и снабжать их данными, которые считываются во время работы всех отправителей.
- отправители обновляют внутреннюю базу данных уже обработанными номерами
Я бы сказал, что это вполне настраиваемо, так как вы можете изменять количество чисел, обрабатываемых отправителями, и изменять количество отправителей.
Если желаемая среда более распределена - у вас может быть больше компьютеров - тогда сделайте это следующим образом:
- Сохранить JMS с одной (или более эквивалентной) очередью для подачи отправителей; создать очередь для уведомления части читателя о законченной работе (чтобы очереди подачи не были перегружены).
- Сделать читатель частью, которая подает данные - наборы чисел - и читает очередь уведомлений.
- Создать базу данных для отслеживания обработанных номеров - сделать ее доступной для отправителей или изолированной для читателя при отправке «отчетов об обработке» от отправителей. Читатель, чем обновления БД.