Мы реализовали MDB, которые выполняют входной и параллельный вход пользователя. У нас есть лимитная проверка на пользовательские данные (например, количество номеров телефонов, которые могут быть у пользователя).Java - MDB - Как избежать проблемы параллелизма
Проблема, с которой я столкнулся, - это два разных потока, которые захватывают данные одного и того же пользователя и обрабатываются. первый поток в порядке, и он проверяет лимит и правильно добавляет телефон в профиль пользователя. Вторая нить также делает то же самое. Но проверка предельного значения происходит до того, как первый поток совершит транзакцию, поэтому проверка предела передается. Но он преодолел предел.
Есть ли способ исправить? делая данные одного пользователя, выбранные одним и тем же потоком, прекрасны. Но я не знаю, как это сделать.
Пожалуйста, помогите. Заранее спасибо.
Редактировать: Еще одна вещь, которую я пропустил передать. Эта проблема возникает при запуске в разных узлах.
У вас проблема параллелизма, а не параллельная проблема. Вам нужно каким-то образом контролировать, кто что получает, когда. Без более подробной информации я больше ничего не могу добавить. – edharned
@edharned Спасибо, я обновил вопрос соответственно – Vaandu
Посмотрите на этот шаблон: http://www.eaipatterns.com/CompetingConsumers.html. Подумайте, что произойдет, если пространство пользователей будет разделено между серверами. Например, один сервер обрабатывает пользователей, чья учетная запись начинается 0-5, другая - 6-9. Теперь у вас есть SPOF, но это может быть устранено с помощью механизма аренды, где каждая аренда представляет диапазон, а серверы захватывают лизинг по мере их запуска. –