2012-06-14 5 views
0

У меня есть требование, как показано ниже.Пакетная обработка с Java EE/EJB3

Уже существует сервер Websphere и модуль MDB, который сохраняет сообщения в таблице базы данных. Каждая строка будет отмечена статусом INSERTED в столбце.

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

Каков наилучший способ сделать это? Мы слышали, что EJB 3.1 Singleton Startup beans будет полезен для запуска пакетного приложения?

ответ

2

Одним из вариантов было бы создать вторую очередь JMS для обработки сообщений. В рамках транзакции записи сообщения в базу данных добавьте идентификатор сообщения в новую очередь.

Ваше приложение обработки может быть выполнено в виде MDB, прикрепленного к этой новой очереди. Это отделяет прием сообщений от их обработки, поэтому вы можете соответствующим образом управлять размерами пула MDB. Также нет необходимости опроса базы данных для проверки новых сообщений.

+0

Спасибо, Ник. Я думаю, что если мы будем обрабатывать один за другим, то это будет решением. Но сообщение, которое мне нужно обработать, требует синхронизации между ними. Например, есть 100 строк в БД и 3 сообщений с одинаковым идентификатором. Если у нас есть три MDB, они выбирают эти 3 сообщения, как их синхронизировать? есть ли какое-либо решение, так как нам нужна пакетная обработка с синхронизацией между ними. Спасибо заранее – user809648

+1

Тогда я думаю, вам нужно определить, как должна запускаться обработка. Если сообщения находятся в группах, вам нужно подождать, пока вы не получите всю группу до их обработки? Откуда вы знаете, когда будет получена вся группа? –

Смежные вопросы