Commit first, then publish
WebhookPersistenceService is a separate bean from the code that publishes to RabbitMQ. The database transaction commits before the message goes out.
Spring applies @Transactional through a bean's proxy, so a call within the same class bypasses it. Splitting the bean means a queued message cannot point at a row that was never committed.