Паттерн транзакционного почтового ящика в Go с PostgreSQL
Записывайте событие вместе с данными. Никогда не разделяйте их.
Два обновления, которые должны выполниться вместе, в итоге могут завершиться ошибкой по отдельности.
Ваш сервис заказов сохраняет заказ в базе данных, а затем публикует событие order.created в брокере сообщений.