דילוג לתוכן הראשי
d.frishchin:~$
חזרה לבלוג →
automation2026.05.299 דק׳ קריאה

בניית לולאות אוטומציה אידמפוטנטיות עם n8n ו-Go

החלק הקשה באוטומציה אינו לגרום לה לרוץ — אלא לגרום לה להיות בטוחה לריצה חוזרת. כל לולאה שאני מייצר היא אידמפוטנטית: ריצה חוזרת מתכנסת לאותו מצב במקום לשכפל עבודה.

הטריק הוא להפריד כוונה מפעולה. n8n מתזמר את התהליך ומחליט מה צריך להיות נכון; שירות Go קטן אוכף זאת, בודק את המצב הנוכחי לפני כל שינוי. מפתחות דה-דופ הופכים ריטריי לחינמי.

worker.go
func Apply(ctx context.Context, desired State) error {
    current, err := Fetch(ctx, desired.Key)
    if err != nil {
        return err
    }
    if current.Equals(desired) {
        return nil // already converged
    }
    return Reconcile(ctx, current, desired)
}

מכיוון ש-Apply אינו עושה דבר כשהמצב כבר תואם, אותה לולאה יכולה לרוץ בתזמון, ב-webhook או בריטריי ידני עם תוצאות זהות. כשלים הופכים משעממים — פשוט מריצים שוב.

#n8n#go#automation