Implement idempotent job processing by tracking completed job IDs in a persistent store and checking for existence before execution. Use a sync.Map for in-memory deduplication or a database for durability across restarts.
import (
"sync"
)
var completedJobs = sync.Map{}
func ProcessJob(jobID string, fn func()) {
if _, loaded := completedJobs.LoadOrStore(jobID, struct{}{}); loaded {
return // Job already processed
}
fn()
}