- KDB+ 教程
- KDB+ - 首页
- Q 编程语言
- Q 编程语言
- Q 语言 - 类型转换
- Q 语言 - 时间数据
- Q 语言 - 列表
- Q 语言 - 索引
- Q 语言 - 字典
- Q 语言 - 表格
- Q 语言 - 动词 & 副词
- Q 语言 - 连接
- Q 语言 - 函数
- Q 语言 - 内置函数
- Q 语言 - 查询
- Q - 进程间通信
- Q - 消息处理器(.Z 库)
- KDB+ 有用资源
- KDB+ - 快速指南
- KDB+ - 有用资源
- KDB+ - 讨论
Q 语言 - 消息处理器
当一个q进程通过进程间通信连接到另一个q进程时,它由消息处理器处理。这些消息处理器具有默认行为。例如,在同步消息处理的情况下,处理器返回查询的值。在这种情况下,同步处理器是.z.pg,我们可以根据需要覆盖它。
Kdb+ 进程有几个预定义的消息处理器。消息处理器对于配置数据库非常重要。一些用法包括:
日志记录 - 记录传入消息(在发生任何致命错误时很有帮助),
安全性 - 根据用户名/IP 地址允许/拒绝访问数据库、某些函数调用等。它有助于仅向授权的订阅者提供访问权限。
处理来自其他进程的连接/断开连接。
预定义的消息处理器
下面讨论一些预定义的消息处理器。
.z.pg
它是一个同步消息处理器(进程获取)。每当在 kdb+ 实例上收到同步消息时,此函数都会自动调用。
参数是要执行的字符串/函数调用,即传递的消息。默认情况下,其定义如下:
.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
它是一个异步消息处理器(进程设置)。它是异步消息的等效处理器。参数是要执行的字符串/函数调用。默认情况下,其定义为:
.z.pg : {value x} / Can be overriden for a customized action.
以下是异步消息的自定义消息处理器,其中我们使用了受保护的执行:
.z.pg: {@[value; x; errhandler x]}
这里errhandler是发生任何意外错误时使用的函数。
.z.po[]
它是一个连接打开处理器(进程打开)。当远程进程打开连接时执行。要查看打开与进程的连接时的句柄,我们可以将 .z.po 定义为:
.z.po : {Show “Connection opened by” , string h: .z.h}
.z.pc[]
它是一个关闭连接处理器(进程关闭)。当连接关闭时调用。我们可以创建自己的关闭处理器,它可以将全局连接句柄重置为 0 并发出命令以设置定时器以每 3 秒(3000 毫秒)触发(执行)。
.z.pc : { h::0; value “\\t 3000”}
定时器处理器 (.z.ts) 尝试重新打开连接。成功后,它会关闭定时器。
.z.ts : { h:: hopen `::5001; if [h>0; value “\\t 0”] }
.z.pi[]
PI 代表进程输入。它用于任何类型的输入。它可以用于处理控制台输入或远程客户端输入。使用 .z.pi[],可以验证控制台输入或替换默认显示。此外,它可以用于任何类型的日志记录操作。
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
它是一个验证连接处理器(用户身份验证)。在打开到 kdb+ 会话的连接时,它会添加一个额外的回调。它在 –u/-U 检查之后和 .z.po(端口打开)之前调用。
.z.pw : {[user_id;passwd] 1b}
输入是userid(符号)和password(文本)。