У меня есть требование, где я должен обработать количество сообщений. Эти сообщения будут вставлены в таблицу БД другим процессом. Все, что мне нужно сделать, это проверить наличие новых сообщений в БД и отправить их соответствующему клиенту по электронной почте или http, в зависимости от их конфигурации. Количество сообщений может составлять несколько тысяч в любой момент времени, а количество клиентов - около 1000.
Я планирую спроектировать так, как работает потребитель-производитель. Подобно тому, как поток производителей опрашивает БД на наличие новых сообщений и помещает их в очередь, а рабочие потоки читают эти сообщения и процессы.
Сначала казалось, что JMS - правильное решение для этого требования. Но я ищу, если какой-либо вариант лучше, например, ExecutorService, используя Threadpool, подходящий для этого требования, учитывая следующие сценарии.
- Если доставка одного сообщения не удалась, мне придется повторить попытку несколько раз, по крайней мере, в течение 24 часов.
- если доставка одного сообщения для клиента не удалась, все шансы на то, что доставка другого сообщения также не удастся. Поэтому я должен попытаться отправить первое сообщение перед обработкой следующего сообщения для этого клиента.
Это означает, что если у меня есть одна очередь для всех сообщений для всех клиентов, то, если одно сообщение не будет выполнено, другие не будут обработаны.
Может ли кто-нибудь подсказать мне, как лучше всего справиться с этим?
Заранее спасибо.