Я довольно новичок в Java EE и JMS и собираюсь сделать реализацию с использованием JMS.
Подумайте о следующем сценарии:
Сценарий
Пользователь нажимает сервлет.Затем сообщение помещается на сервер / очередь JMS из этого сервлета.Затем пользователю отправляется ответ с сообщением «Очередь сообщений».
Опция 1
Потребитель / MDB получает сообщение из очереди JMS и обрабатывает его.Это нормальная работа и довольно стандартная.
Вариант 2
Нет потребителя (по какой-либо причине) или получатель обрабатывает сообщения слишком медленно.Так что я хотел бы, чтобы сообщение в очереди находилось в режиме ожидания.После истечения времени ожидания и отправки электронной почты и т. Д. (Электронная почта приведена в качестве примера).
Чтение спецификации API / учебника Java EE 6, которое я нашел в классе QueuSender
void send(Message message, int deliveryMode, int priority, long timeToLive)
По настройкам timeToLive сообщение будет удалено из очереди.Проблема в том, что нет интерфейса / обратного вызова, чтобы знать, что сообщение было удалено.Это просто исчезает.Или я ошибаюсь?
Еще один подход, о котором я подумал, заключался в том, чтобы поток отслеживал очередь и извлекал сообщения с «истекшим сроком действия» и извлекал их из очереди.Но я не думаю, что это возможно, не так ли?
Любой свет, проливаемый по этому вопросу, был бы очень признателен.