Sto utilizzando l'SDK AWS per Java e sto utilizzando il client SQL asincronizzato per le richieste batch in modo da ridurre i costi.Come posso forzare AmazonSQSBufferedAsyncClient a svuotare i messaggi?
Quando la mia applicazione si spegne, voglio assicurarmi che nessun messaggio sia in attesa nel buffer, ma non c'è il metodo .flush()
che posso vedere sul client.
AmazonSQSBufferedAsyncClient.shutdown()
svuota i messaggi quando viene chiamato? Ho guardato lo source code e non è chiaro. Il metodo chiama shutdown()
su ogni QueueBuffer
che ha, ma dentro QueueBuffer.shutdown()
dice
public void shutdown() {
//send buffer does not require shutdown, only
//shut down receive buffer
receiveBuffer.shutdown();
}
Inoltre, la documentazione per .shutdown()
dice:
Chiude questo oggetto cliente, liberando tutte le risorse che potrebbe essere tenuto aperto. Questo è un metodo facoltativo e non è necessario chiamare il numero per chiamarlo, ma è possibile se si desidera rilasciare esplicitamente qualsiasi risorsa aperta . Una volta che un client è stato arrestato, non dovrebbe essere utilizzato per fare altre richieste.
Per questa applicazione, è necessario assicurarsi che nessun messaggio venga perso durante il buffering. Devo gestirlo manualmente usando il normale AmazonSQSClient
invece del buffering/async?
ho trovato questo, che sembra essere la stessa domanda, ed è attualmente senza risposta: https://forums.aws.amazon.com/thread.jspa?threadID=122189 – Daenyth