Padrão Outbox
Resolve o problema da "escrita dupla" (banco de dados + fila de mensagens na mesma transação) gravando o evento numa tabela outbox ao mesmo tempo que a alteração dos dados, e deixando um processo separado publicá-lo.
O problema: se você faz db.commit() e depois queue.publish(), um dos dois pode dar certo enquanto o outro falha — consistência parcial. A tabela outbox registra o evento dentro da mesma transação do banco. Um processo de relay consulta a tabela (ou a lê via CDC, com Debezium) e publica no Kafka/RabbitMQ. Garante entrega at-least-once, então os consumidores precisam ser idempotentes. É padrão em sistemas modernos orientados a eventos.