Maneira correta de parar o appender assíncrono de logback personalizado

Criei anexos de logback do Amazon SQS e SNS usando o Java SDK da Amazon. Os anexos básicos usam as APIs Java síncronas, mas também criei versões assíncronas de ambos, estendendo och.qos.logback.classic.AsyncAppender classe.

Parar o contexto do criador de logs de logback com os anexadores assíncronos não funciona como o esperado. Quando o contexto é parado, todos os anexos assíncronos tentam liberar os eventos restantes antes de sair. O problema se origina dech.qos.logback.core.AsyncAppenderBase#stop método, que interrompe o segmento de trabalho. A interrupção é acionada enquanto o Amazon SDK ainda está processando os eventos na fila e resulta em umacom.amazonaws.AbortedException. Nos meus testes, oAbortedException aconteceu enquanto o SDK estava processando uma resposta da API; portanto, a mensagem real foi transmitida, mas isso nem sempre pode ser o caso.

Pretende-se que o logback interrompa o segmento de trabalho, mesmo que os trabalhadores ainda devam processar a fila de eventos restante? E se sim, como posso solucionar o problemaAbortedException causado pela interrupção? Eu poderia substituir todos os métodos de parada e remover a interrupção, mas isso exigiria copiar e colar a maior parte da implementação.

questionAnswers(1)

yourAnswerToTheQuestion