Реализация очереди сопротивления - PullRequest
4 голосов
/ 19 мая 2010

Я читал статью о пакетной обработке в Java на JDJ http://java.sys -con.com / node / 415321 . В статье упоминается, что в качестве Batch Updater вместо очереди постоянства используется немедленная отправка отдельной вставки или обновления в базу данных. Автор не приводит конкретный пример этой концепции, поэтому я погуглил «Очередь постоянства», но ничего особенного не придумал. Кто-нибудь знает хороший пример этого?

Ответы [ 2 ]

4 голосов
/ 19 мая 2010

Взгляните на этот предыдущий вопрос Stackoverflow:

Потоки производителя / потребителя с использованием очереди

Первый ответ говорит о реализации Producer-Consumer (что вам нужно) с использованием ExecutorService . Это один из способов сделать то, что вы хотите, но он использует очередь в памяти - вы можете довольно легко изменить это на JMS Queue.

3 голосов
/ 19 мая 2010

Этот шаблон известен под несколькими именами ( Например, Резервное хранилище, Запись за и т. Д. * ). Это часто наблюдается в технологиях Data Grid / Cache, а также в других. Обычно доменные объекты хранятся в какой-то очереди FIFO или очереди приоритетов, а затем диспетчер снимает их с очереди в альтернативном потоке или процессе и передает их вашему реальному DAL. Очереди могут находиться в памяти или фактически помещаться в сетевую очередь, такую ​​как ActiveMQ или MSMQ. Кроме того, я видел сценарий, в котором есть отдельные очереди для каждого типа операций с БД.

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

После постановки в очередь вы можете просто выполнять пакетные обновления / вставки или продолжать обрабатывать элементы по одному. Имейте в виду, что понятие транзакции приобретает совершенно иное значение, поэтому вам необходимо продумать это до конца.

Хотя есть технологии, которые делают это ... Это скорее шаблон, чем отдельная технология. У меня нет удобного примера, но вы можете посмотреть документацию по сетке данных из таких продуктов, как Oracle Coherence. Ищите бэк-магазины.

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