Transaction outbox forma de garantir a entrega das mensagens quando o próprio message broker ficar fora do ar. Antes de enviar a mensagem para o um Kafka, você salva ela em uma tabela temporária no banco, e quando recebe o ACK do kafka, você a deleta (importante observar o custo de escrita e leitura em BD). Pode ser um RDMBS, Dynamo (KV), Cache, sem colocar no prõprio DB da aplicação. Pode-se criar um SDK da organização que para toda request já faz o retry e se não der certo grava na tabela.