Конвейерная обработка сообщений
Возможности работы команд topic read
и topic write
со стандартными устройствами ввода/вывода, а также поддержка потокового режима на чтении, позволяет выстраивать полноценные сценарии интеграции с передачей сообщений между топиками и их преобразованиями. В данном разделе собраны несколько примеров подобных сценариев.
Примечание
В примерах используется профиль db1
, подробнее смотрите в Создание профиля соединения.
-
Перекладывание одного сообщения из
topic1
в базе данныхdb1
вtopic2
в базе данныхdb2
, с ожиданием его появления в топике-источникеydb -p db1 topic read topic1 -c c1 -w | ydb -p db2 topic write topic2
-
Фоновая передача всех появляющихся однострочных сообщений в топике
topic1
в базе данныхdb1
, в топикtopic2
в базе данныхdb2
. Данный сценарий можно использовать в случае, если гарантируется отсутствие байтов0x0A
(перевод строки) в исходных сообщениях.ydb -p db1 topic read topic1 -c c1 --format newline-delimited -w | \ ydb -p db2 topic write topic2 --format newline-delimited
-
Фоновая передача точной бинарной копии всех появляющихся сообщений в топике
topic1
в базе данныхdb1
, в топикtopic2
в базе данныхdb2
, с использованием кодировки сообщений base64 на потоке передачи.ydb -p db1 topic read topic1 -c c1 --format newline-delimited -w --transform base64 | \ ydb -p db2 topic write topic2 --format newline-delimited --transform base64
-
Передача ограниченного пакета однострочных сообщений с фильтрацией по подстроке
ERROR
ydb -p db1 topic read topic1 -c c1 --format newline-delimited | \ grep ERROR | \ ydb -p db2 topic write topic2 --format newline-delimited
-
Запись результата исполнения YQL-запроса в виде сообщений в топик
topic1
ydb -p db1 yql -s "select * from series" --format json-unicode | \ ydb -p db1 topic write topic1 --format newline-delimited