aboutsummaryrefslogtreecommitdiffstats
path: root/ydb/docs/ru/core/reference/ydb-cli/topic-pipeline.md
blob: 042fdebbc98010e11b5fa8527bca193cd31093a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Конвейерная обработка сообщений

Возможности работы команд `topic read` и `topic write` со стандартными устройствами ввода/вывода, а также поддержка потокового режима на чтении, позволяет выстраивать полноценные сценарии интеграции с передачей сообщений между топиками и их преобразованиями. В данном разделе собраны несколько примеров подобных сценариев.

* Перекладывание одного сообщения из `topic1` в базе данных `db1` в `topic2` в базе данных `db2`, с ожиданием его появления в топике-источнике

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 -w | {{ ydb-cli }} -p db2 topic write topic2 
  ```

* Фоновая передача всех появляющихся однострочных сообщений в топике `topic1` в базе данных `db1`, в топик `topic2` в базе данных `db2`. Данный сценарий можно использовать в случае, если гарантируется отсутствие байтов `0x0A` (перевод строки) в исходных сообщениях.

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 --format newline-delimited -w | \
  {{ ydb-cli }} -p db2 topic write topic2 --format newline-delimited
  ```

* Фоновая передача точной бинарной копии всех появляющихся сообщений в топике `topic1` в базе данных `db1`, в топик `topic2` в базе данных `db2`, с использованием кодировки сообщений base64 на потоке передачи.

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 --format newline-delimited -w --transform base64 | \
  {{ ydb-cli }} -p db2 topic write topic2 --format newline-delimited --transform base64
  ```

* Передача ограниченного пакета однострочных сообщений с фильтрацией по подстроке `ERROR`

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 --format newline-delimited | \
  grep ERROR | \
  {{ ydb-cli }} -p db2 topic write topic2 --format newline-delimited
  ```

* Запись результата исполнения YQL-запроса в виде сообщений в топик `topic1`

  ```bash
  {{ ydb-cli }} -p db1 yql -s "select * from series" --format json-unicode | \
  {{ ydb-cli }} -p db1 topic write topic1 --format newline-delimited
  ```

### Исполнение YQL-запроса с передачей сообщений из топика в качестве параметров {#example-read-to-yql-param}

* Исполнение YQL-запроса с передачей параметром каждого сообщения, считанного из топика `topic1`

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 --format newline-delimited -w | \
  {{ ydb-cli }} -p db1 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`

  ```bash
  {{ ydb-cli }} -p db1 topic read topic1 -c c1 --format newline-delimited -w | \
  {{ ydb-cli }} -p db1 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
  ```