Q Dili - Mesaj İşleyici

Zaman q süreç diğerine bağlanır qsüreçler arası iletişim yoluyla süreç, mesaj işleyicileri tarafından işlenir. Bu ileti işleyicilerinin varsayılan bir davranışı vardır. Örneğin, eşzamanlı mesaj işleme durumunda, işleyici sorgunun değerini döndürür. Bu durumda eşzamanlı işleyici.z.pg, gereksinime göre geçersiz kılabileceğimiz.

Kdb + işlemlerinin önceden tanımlanmış birkaç ileti işleyicisi vardır. Veritabanını yapılandırmak için ileti işleyicileri önemlidir. Kullanımlardan bazıları şunlardır -

  • Logging - Gelen mesajları günlüğe kaydet (herhangi bir önemli hata durumunda faydalıdır),

  • Security- Kullanıcı adı / ip adresine bağlı olarak veritabanına, belirli işlev çağrılarına vb. Erişime izin verin / vermeyin. Yalnızca yetkili abonelere erişim sağlamaya yardımcı olur.

  • Handle connections/disconnections diğer süreçlerden.

Önceden Tanımlanmış İleti İşleyicileri

Önceden tanımlanmış mesaj işleyicilerinin bazıları aşağıda tartışılmaktadır.

.z.pg

Senkronize bir mesaj işleyicidir (işlem alma). Bu işlev, bir kdb + örneğinde bir senkronizasyon mesajı alındığında otomatik olarak çağrılır.

Parametre, yürütülecek dizi / işlev çağrısıdır, yani iletilen mesajdır. Varsayılan olarak şu şekilde tanımlanır -

.z.pg: {value x}                / simply execute the message 
                                received but we can overwrite it to
give any customized result.
.z.pg : {handle::.z.w;value x}  / this will store the remote handle
.z.pg : {show .z.w;value x}     / this will show the remote handle

.z.ps

Eşzamansız bir mesaj işleyicidir (işlem kümesi). Eşzamansız mesajlar için eşdeğer işleyicidir. Parametre, yürütülecek dizi / işlev çağrısıdır. Varsayılan olarak şu şekilde tanımlanır:

.z.pg : {value x}        / Can be overriden for a customized action.

Aşağıda, korumalı yürütmeyi kullandığımız zaman uyumsuz mesajlar için özelleştirilmiş mesaj işleyicisi yer almaktadır.

.z.pg: {@[value; x; errhandler x]}

Buraya errhandler beklenmedik bir hata durumunda kullanılan bir işlevdir.

.z.po []

Bir bağlantı açık işleyicidir (işlem açık). Uzak bir işlem bir bağlantı açtığında yürütülür. Bir işleme bağlantı açıldığında tutacağı görmek için .z.po'yu şu şekilde tanımlayabiliriz:

.z.po : {Show “Connection opened by” , string h: .z.h}

.z.pc []

Bir yakın bağlantı işleyicisidir (işlem-kapanış). Bir bağlantı kapatıldığında çağrılır. Global bağlantı tutamacını 0'a sıfırlayabilen ve zamanlayıcıyı her 3 saniyede bir (3000 milisaniye) ateşlemek (yürütmek) için bir komut verebilen kendi yakın işleyicimizi oluşturabiliriz.

.z.pc : { h::0; value “\\t 3000”}

Zamanlayıcı işleyici (.z.ts) bağlantıyı yeniden açmaya çalışır. Başarı durumunda zamanlayıcıyı kapatır.

.z.ts : { h:: hopen `::5001; if [h>0; value “\\t 0”] }

.z.pi []

PI, işlem girişi anlamına gelir. Her türlü girdi için çağrılır. Konsol girişini veya uzak istemci girişini işlemek için kullanılabilir. .Z.pi [] kullanılarak konsol girişi doğrulanabilir veya varsayılan ekran değiştirilebilir. Ek olarak, her türlü loglama işlemi için kullanılabilir.

q).z.pi
'.z.pi

q).z.pi:{">", .Q.s value x}

q)5+4
>9

q)30+42
>72

q)30*2
>60

q)\x .z.pi
>q)

q)5+4
9

.z.pw

Bir doğrulama bağlantı işleyicisidir (kullanıcı kimlik doğrulaması). Bir kdb + oturumuna bağlantı açıldığında fazladan bir geri arama ekler. –U / -U kontrollerinden sonra ve .z.po'dan (bağlantı noktası açık) önce çağrılır.

.z.pw : {[user_id;passwd] 1b}

Girişler userid (sembol) ve password (Metin).