kazzle.config.ts dosyasında bir process bileşeni üzerinde tanımlarsınız. Bir bileşen ihtiyacınız kadar çok tetikleyiciye sahip olabilir.
Yapı
processModeyaşam döngüsünü seçer — uzun süre çalışan sunucu veya tetikleyici başına tek seferlik çalışma.triggers[]bu bileşeni tetiklemesi gereken olayları listeler.
processMode
| Mod | Ne çalışır | Ne zaman kullanılır |
|---|---|---|
persistent (varsayılan) | Uzun süre çalışan HTTP sunucusu. Tetikleyiciler buna POST edilir. | Bileşen zaten HTTP sunuyor veya bellekte durum tutuyor (kuyruklar, websocket’ler, önbellekler). |
triggered | Giriş betiği tetikleyici başına oluşturulur ve çıkar. | Saf arka plan işleri — gece temizliği, tek Stripe webhook işleyicisi, vb. Boş sunucular yok. |
Tetikleyiciler
Her tetikleyicinin birname (bileşen içinde benzersiz), bir kind ve — moda bağlı olarak — bir schedule ve/veya path vardır.
| Alan | Ne zaman gerekli | Notlar |
|---|---|---|
name | her zaman | Webhook URL segmentinde ve günlüklerde kullanılır. Kebab-case. |
kind | her zaman | 'schedule' veya 'webhook'. |
schedule | kind: 'schedule' olduğunda | 5 alanlı cron ifadesi. Dakika çözünürlüğü minimum. |
path | processMode: 'persistent' olduğunda | Tetikleyicinin iniş yaptığı sunucunuzda HTTP rotası. |
Kalıcı mod — sunucuya HTTP
Kalıcı bir bileşen için tetikleyici ateşlendiğinde, Kazzle belirtilenpath adresinde sunucunuza POST yapar. İstek şunları taşır:
| Başlık | Ne söyler |
|---|---|
Authorization: Bearer ${KAZZLE_TRIGGER_SECRET} | Bunu doğrulayın. Eşleşmeyenleri reddedin. |
x-kazzle-trigger-name | Manifestten tetikleyicinin name değeri. |
x-kazzle-trigger-run-id | Günlük korelasyonu için opak kimlik. |
x-kazzle-triggered-by | cron | webhook | manual. |
Tetiklenen mod — tetikleyici başına tek seferlik
triggered bileşen için tetikleyici ateşlendiğinde, Kazzle giriş betiğini yeni oluşturur ve çıkmasını bekler. path yoktur; betik hangi tetikleyicinin ateşlendiğini ortam değişkenlerinden öğrenir.
| Ortam değişkeni | Değer |
|---|---|
TRIGGER_NAME | Manifestten tetikleyicinin name değeri. |
TRIGGERED_BY | cron | webhook | manual. |
RUN_ID | Günlük korelasyonu için opak kimlik. |
WEBHOOK_PAYLOAD | JSON gövdesi (yalnızca webhook tetikleyicileri). |
Webhook URL’leri
triggerName segmenti o bileşenin triggers[] içinde bir kind: 'webhook' girişiyle eşleşmelidir. Bilinmeyen tetikleyici adları 404 döndürür.
Zamanlama çözünürlüğü
Cron ifadeleri 5 alanlıdır (dakika, saat, ayın günü, ay, haftanın günü) ve dakika çözünürlüğü minimumdur. Dakika altı zamanlamalar manifest doğrulama sırasında reddedilir.Çalışmalar nasıl kaydedilir
Her tetikleyici ateşlemesi,trigger_name, triggered_by, run_id ve çalışmanın çıkış durumunu içeren bir process_runs satırı yazar. Bunları kendi kodunuzdan sorgulayabilir veya uygulamanın çalışmalar görünümünde inceleyebilirsiniz.
Krediler tükenmek
Başarısız bir çalışma kaydedilir ve günlüğe alınır, ancak zamanlama normal temposuyla çalışmaya devam eder — hatalı bir çalışma tetikleyiciyi asla devre dışı bırakmaz. Bir çalışmayı durduran tek şey kredilerdir: her tetikleyici ateşlemesi alanın bakiyesine karşı kontrol edilir ve alan kredileri bittiğinde (veya faturalandırma ayarlanmadığında) çalışmalar402 ile atlanır. Bu kendi kendini iyileştirir — zamanlama silahlı kalır ve bakiyeyi doldurduktan sonraki sonraki ateşleme normal şekilde çalışır, manuel devam etmeye gerek yoktur.
Otomasyonları daha sonra ekleme
Basit bir uygulama tetikleyici olmadan başlayabilir ve daha sonra bunları kazanabilir — günlük bir özet ekleyin, Stripe’ı bağlayın, temizliği çalıştırın. Bileşenin yaşam döngüsü (processMode) ve tetikleyicileri (triggers[]) bağımsızdır, bu nedenle uygulamanın geri kalanını yeniden yazmadan bunları değiştirebilirsiniz.