Skip to main content

← Observer Servisi Ana Sayfasi

Observer Servisi Event Sozlesmeleri

Izlenen Giris Eventleri

ingest.accepted.v1

Akis baslangic eventi

{
"event": "ingest.accepted.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "ingest-service",
"produced_at": "2026-04-14T10:20:00.100Z",
"process_ms": 9
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {},
"error": null
}

Stage Basari Eventleri

Observer asagidaki eventleri stage completion sinyali olarak kabul eder:

  • stream.created.v1
  • calibration.ready.v1
  • raw.persisted.v1
  • synth.ready.v1
  • window.ready.v1
  • rule.completed.v1

Not: rule.completed.v1 eventinde no-trigger durumunda da result=success beklenir.

Stage Hata Eventleri

  • stream.failed.v1
  • calibration.failed.v1
  • raw.failed.v1
  • synth.failed.v1
  • window.failed.v1
  • rule.failed.v1

Observer Cikis Eventleri

observer.buffer.duplicate.v1

Ayni stream_id ile tekrar ingest geldiginde

{
"event": "observer.buffer.duplicate.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:21:00.200Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"existing_stream_id": 9823412,
"incoming_stream_id": 9823412,
"action": "keep_existing_buffer"
},
"error": null
}

observer.buffer.replaced.v1

Yeni stream geldigi icin eski takili buffer degistirildiginde

{
"event": "observer.buffer.replaced.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:25:00.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823500
},
"data": {
"old_stream_id": 9823412,
"new_stream_id": 9823500,
"old_status": "in_progress",
"stale_timeout_sec": 420,
"reason": "stuck_previous_stream"
},
"error": null
}

observer.retry.requested.v1

Kaldigi stage'e retry istegi

{
"event": "observer.retry.requested.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:22:00.500Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"target_stage": "synthesis",
"retry_count": 2,
"max_retry": 3,
"backoff_sec": 15,
"reason": "synth.failed.v1 received"
},
"error": null
}

Retry Routing Sozlesmesi

Observer retry eventi, hedef servise asagidaki baglayici kurallarla gonderilir:

target_stagetarget_topic
streamcinga.stream.retry
calibrationcinga.calibration.retry
raw_writercinga.raw-writer.retry
synthesiscinga.synthesis.retry
windowcinga.window.retry
rulecinga.rule.retry

Routing kurallari:

  • Kafka message key: device_id
  • Partition secimi: hedef servisin standart partitioneri (device bazli ordering korunur)
  • Zorunlu headerlar:
    • x-trace-id
    • x-stream-id
    • x-target-stage
    • x-retry-count
    • x-max-retry

Boylece retry, tam olarak kaldigi stage'e yonlenir ve ayni lifecycle duplicate baslatilmaz.

Ek kural: Retry publish oncesi mevcut buffer incoming.stream_id ile uyumlu degilse, once observer.buffer.replaced.v1 uretilmeli ve buffer yeniden kurulmalidir.

observer.escalated.v1

Max retry sonrasi kalici hata

{
"event": "observer.escalated.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:23:05.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"failed_stage": "synthesis",
"retry_count": 3,
"max_retry": 3,
"status": "permanent_failed"
},
"error": {
"error_code": "MAX_RETRY_EXCEEDED",
"error_message": "synthesis stage did not recover after retries",
"retryable": false
}
}

observer.cleanup.completed.v1

Terminal durumda device buffer temizligi tamamlandiginda

{
"event": "observer.cleanup.completed.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:23:06.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"terminal_status": "completed",
"buffer_key": "device_buffer:400000011D081B70",
"cleanup_result": "deleted"
},
"error": null
}

Event Log Kaydi

Retry sonrasi kalici hatalar event log'a append edilir.

Minimum alanlar:

  • trace_id
  • device_id
  • stream_id
  • failed_stage
  • retry_count
  • max_retry
  • error_code
  • created_at

Terminal durum sonrasi device_buffer temizleme sonucu da event log'a yazilir.