Używam pakietu SDK AWS dla języka Java i używam klienta asynchronizującego asynchroniczny sqs do żądania wsadowego, aby zmniejszyć koszty.Jak zmusić klienta AmazonSQSBufferedAsyncClient do opróżnienia wiadomości?
Gdy moja aplikacja zostanie wyłączona, chcę się upewnić, że żadne wiadomości nie czekają w buforze, ale nie ma żadnej metody, którą widzę na kliencie.
Czy AmazonSQSBufferedAsyncClient.shutdown()
opróżnia moje wiadomości po wywołaniu? Spojrzałem na source code i jest niejasne. Metoda nazywa shutdown()
na każdym QueueBuffer
że ma, ale w środku QueueBuffer.shutdown()
mówi
public void shutdown() {
//send buffer does not require shutdown, only
//shut down receive buffer
receiveBuffer.shutdown();
}
Ponadto dokumentacja .shutdown()
mówi:
Wyłącza tego obiektu klienta, uwalniając wszelkie zasoby, które mogą być trzymany otwarty. Jest to metoda opcjonalna, a osoby dzwoniące nie są proszone o numer , aby ją wywołać, ale mogą, jeśli chcą jawnie zwolnić wszystkie otwarte zasoby . Po wyłączeniu klienta nie należy go używać do tworzenia kolejnych żądań.
W przypadku tej aplikacji muszę zagwarantować, że podczas buforowania wiadomości nie zostaną utracone. Czy muszę obsługiwać to ręcznie, używając normalnego AmazonSQSClient
zamiast buforowania/asynchronicznego?
znalazłem to, co wydaje się być to samo pytanie, a obecnie bez odpowiedzi: https://forums.aws.amazon.com/thread.jspa?threadID=122189 – Daenyth