Communication Servisi SSS
Komut payload'i neden dogrudan event ile gelmiyor?
Cunku komut tanimi merkezi bir sozlukten cozulmeli. Boylece ayni command_code, farkli ureten servislerden gelse bile ayni endpoint, template ve timeout ile gonderilir.
Bu servisi hangi servisler tetikleyebilir?
Uc tip producer vardir:
- Rule sonucunda Action Executor
- Zamanlanmis isler icin Automation
- Manuel kullanici talepleri icin API
Bu uc kaynak ayni command dictionary uzerinden standardize edilir.
Neden Redis cache kullaniliyor?
device_commands tablo okumalari cok sik olabilecegi icin lookup gecikmesini azaltmak amaciyla kullanilir. Ancak Redis source of truth degildir; DB fallback zorunludur.
Cache neye gore keylenmeli?
Pratik anahtar yapisi project_id + command_code olmalidir. Cunku ayni kod farkli projelerde farkli komut tanimina sahip olabilir.
device_commands kaydi pasif ise ne olur?
is_active = false kayitlari gonderime sokulmaz. Servis device.command.failed.v1 uretir.
is_system_only=true komutlar API'den cagrilabilir mi?
Hayir. Bu komutlar sadece sistem akislarinda (Automation, Action Executor, internal servisler) kullanilir. API kaynakli taleplerde servis komutu reddeder ve COMMAND_FORBIDDEN_FOR_USER hatasi uretir.
Retry mantigi ne zaman devreye girer?
Komut cozumleme hatasinda degil, gonderim sonrasi gecici downlink veya ACK timeout durumlarinda devreye girmelidir.
Komut sonucu hangi servislerce consume edilir?
Action, automation, observer veya audit benzeri servisler device.command.acked.v1 ve device.command.failed.v1 eventlerini consume ederek kendi sureclerini tamamlar.
Bu servis command history tablosu yazar mi?
Mevcut belgede zorunlu bir command-history tablosu tanimlanmiyor. Bu servis icin temel kontrat, sozlugun DB'den okunmasi ve sonucun Kafka'ya event olarak yazilmasidir.