обратный вызов при обновлении таблицы в kdb - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу реализовать механизм клиент-сервер в kdb, где клиенты могут самостоятельно регистрировать себя для получения обратного вызова при обновлении какой-либо таблицы.

Я знаю, как работает обратный вызов в kdb, я не смогчтобы понять, как связать обновления таблицы на сервере с функцией, из которой я могу вызвать 'callback' с клиента.

1 Ответ

0 голосов
/ 19 февраля 2019

По сути, вы хотите реализовать механизм «Публикация-подписка».В KDB уже есть скрипт 'uq' в библиотеке тиков, который обеспечивает: https://code.kx.com/q/cookbook/publish-subscribe/

На сервере он поддерживает список клиентов вместе с их дескрипторами, таблицами подписки и функциями обратного вызова.Вам придется изменить функцию на сервере, который обрабатывает вставку / обновление данных, чтобы также публиковать данные.

q)  .u.pub[table name; table data]

Это позаботится о вызове функции обратного вызова каждого клиента, зарегистрированного для этой таблицы.

На стороне клиента создайте соединение с издателем и вызовите функцию библиотеки для подписки.

q) .u.sub[tablename;list_of_symbols_to_subscribe_to]

Вы также можете посмотреть пример кода издателя и подписчика: https://github.com/KxSystems/cookbook/tree/master/pubsub

...