Я пытаюсь реализовать следующий сценарий, и я мог бы действительно использовать и ценить некоторую помощь.Я использую ActiveMQ 5.14 с верблюдом 2.21.
В очереди каждое сообщение соответствует одному компьютеру.Машины подключаются к очереди через одного потребителя и не различаются для потребителя.Сообщения должны храниться в очереди до тех пор, пока один компьютер не подтвердит, что он достиг нужного компьютера с помощью отдельного запроса.После каждой загрузки сообщения указанное сообщение должно быть заблокировано на определенное время.
Я не смог найти ни одной функции ActiveMQ, которая бы соответствовала моей проблеме.Мой подход состоял бы в том, чтобы отправлять сообщение после каждой выборки во вторую очередь, которая служит механизмом блокировки, и отправлять его обратно в извлекаемую очередь по истечении заданного времени ожидания.
Возможно, лучшим подходом будет откат сеанса после каждойизвлечь, если сообщение не было подтверждено машиной.
Есть ли у вас какие-либо предложения о том, как будет выглядеть жизнеспособное решение этой проблемы?
edit: больше подробностей, чтобы прояснить ситуацию
Приложение связывается с клиентами посредством предоставления REST API в Интернете с помощью двух вызовов: GET и DELETE .
GET извлекает следующее сообщение из очереди, а DELETE удаляет сообщение из очереди.Мне нужно убедиться, что сообщение выбирается только один раз за определенный период времени и что оно возвращается в очередь, если клиент не отправляет запрос DELETE.В настоящее время у меня есть маршрут от службы отдыха к bean-компоненту, который выбирает сообщение из очереди, возвращает его в запрос GET и после отправляет его обратно в очередь.По запросу DELETE я удаляю сообщение из очереди с заданным идентификатором.Мне все еще нужно найти способ обеспечить доступ к последнему полученному сообщению в течение определенного периода времени.