JMS с CompletableFuture
Я застрял при использовании Java CompletableFuture
с JMS (ActiveMQ). Когда я отправляю запрос, на который я ожидаю ответа, я создаю CompletableFuture
и положить это в Map
с идентификатором корреляции в качестве ключа.
Это прекрасно работает, пока я получаю ответ. Когда я не получаю ответа, зомби начинают накапливаться на карте.
Я пытался прикрепить код очистки к CompletableFuture
с помощью whenComplete()
но код вообще не вызывается, когда CompletableFuture.get(long,TimeUnit)
время ожидания (код Java в timedGet()
просто выбросит исключение, не вызывая ничего другого).
Это выглядит так очевидное место, чтобы использовать Future
API. У кого-нибудь есть рабочий пример или идея как убрать мертвые записи на карте?
Примечание. До получения ответа может пройти до трех часов.
Примечание 2: Java 8