Forma correcta de detener el apéndice asíncrono de inicio de sesión personalizado

He creado los apéndices de inicio de sesión de Amazon SQS y SNS utilizando el SDK de Java de Amazon. Los apéndices básicos usan las API síncronas de Java, pero también he creado versiones asincrónicas de ambos extendiendo elch.qos.logback.classic.AsyncAppender clase.

Sin embargo, detener el contexto del registrador de inicio de sesión con los apéndices asíncronos no funciona como se esperaba. Cuando se detiene el contexto, todos los anexos asíncronos intentan vaciar los eventos restantes antes de salir. El problema se origina ench.qos.logback.core.AsyncAppenderBase#stop método, que interrumpe el subproceso de trabajo. La interrupción se activa mientras el SDK de Amazon todavía está procesando los eventos en cola y genera uncom.amazonaws.AbortedException. En mis pruebas elAbortedException sucedió mientras el SDK procesaba una respuesta de la API, por lo que el mensaje real se transmitió, pero este no siempre es el caso.

¿Se pretende que el inicio de sesión interrumpa el subproceso de trabajo a pesar de que los trabajadores aún deben procesar la cola de eventos restante? Y si es así, ¿cómo puedo evitar elAbortedException causado por la interrupción? Podría anular todos los métodos de detención y eliminar la interrupción, pero eso requeriría una copia que pegue la mayor parte de la implementación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta