Какая очередь блокировки Java лучше всего подходит для сценариев с несколькими производителями и с одним или несколькими потребителями?
Я тестирую с LinkedBlockingQueue, но получаю исключение OutOfMemoryError.
Я пытаюсь добиться следующих вещей.
- продюсер создает объект и ставит в очередь.
- потребитель получает данные из очереди и вставляет их в базу данных. Было бы 400 производителей, и я могу настроить потребителей по своему желанию.
Дайте мне знать любую идею.
Обновление
Производитель: он должен слушать Server Socket. Он читает данные из сокета и создает объект (доменные объекты) и помещает их в очередь.
Потребитель: взять объект из очереди и вставить в БД (поддерживается Hiberante и пул соединений)
Это моя настоящая среда. Процесс должен иметь возможность обрабатывать не менее 200 записей в секунду. Я проверяю масштабируемость процесса и способы его улучшения. Я надеюсь, что это даст лучшую идею.
Полезные ссылки:
vmoptions
Мониторинг и управление приложениями на платформе Java SE 6
BlockingQueue