Конвейерная обработка сообщений
Возможности работы команд topic read
и topic write
со стандартными устройствами ввода/вывода, а также поддержка потокового режима на чтении, позволяет выстраивать полноценные сценарии интеграции с передачей сообщений между топиками и их преобразованиями. В данном разделе собраны несколько примеров подобных сценариев.
-
Перекладывание одного сообщения из
topic1
в базе данныхquickstart
вtopic2
в базе данныхdb2
, с ожиданием его появления в топике-источникеydb -p quickstart topic read topic1 -c c1 -w | ydb -p db2 topic write topic2
-
Фоновая передача всех появляющихся однострочных сообщений в топике
topic1
в базе данныхquickstart
, в топикtopic2
в базе данныхdb2
. Данный сценарий можно использовать в случае, если гарантируется отсутствие байтов0x0A
(перевод строки) в исходных сообщениях.ydb -p quickstart topic read topic1 -c c1 --format newline-delimited -w | \ ydb -p db2 topic write topic2 --format newline-delimited
-
Фоновая передача точной бинарной копии всех появляющихся сообщений в топике
topic1
в базе данныхquickstart
, в топикtopic2
в базе данныхdb2
, с использованием кодировки сообщений base64 на потоке передачи.ydb -p quickstart topic read topic1 -c c1 --format newline-delimited -w --transform base64 | \ ydb -p quickstart topic write topic2 --format newline-delimited --transform base64
-
Передача ограниченного пакета однострочных сообщений с фильтрацией по подстроке
ERROR
ydb -p quickstart topic read topic1 -c c1 --format newline-delimited | \ grep ERROR | \ ydb -p db2 topic write topic2 --format newline-delimited
-
Запись результата исполнения YQL-запроса в виде сообщений в топик
topic1
ydb -p quickstart yql -s "select * from series" --format json-unicode | \ ydb -p quickstart topic write topic1 --format newline-delimited
Исполнение YQL-запроса с передачей сообщений из топика в качестве параметров
-
Исполнение YQL-запроса с передачей параметром каждого сообщения, считанного из топика
topic1
ydb -p quickstart topic read topic1 -c c1 --format newline-delimited -w | \ ydb -p quickstart table query execute -q 'declare $s as String;select Len($s) as Bytes' \ --stdin-format newline-delimited --stdin-par s --stdin-format raw
-
Исполнение YQL-запроса с адаптивным пакетированием параметров из сообщений, считанных из топика
topic1
ydb -p quickstart topic read topic1 -c c1 --format newline-delimited -w | \ ydb -p quickstart table query execute \ -q 'declare $s as List<String>;select ListLength($s) as Count, $s as Items' \ --stdin-format newline-delimited --stdin-par s --stdin-format raw \ --batch adaptive