benthos组件使用系列(input)
input常用组件的记录:
generate
benthos的任务运行必须要有一个输入作为触发条件,比如当处理文件时,配置的目录下有相应的文件触发任务的运行。
但是有的需求肯能没有输入,此时可以用input中的generate,generate可以定时的触发一次推动任务向下流转。
举例:
定时查数据库。
input:
generate:
interval: '@every 5m'
mapping: 'root = {}'
processors:
- sql_select:
driver: postgres
dsn: postgres://foouser:foopass@localhost:5432/testdb?sslmode=disable
table: foo
columns: [ "*" ]
定时时间写法有:
interval: 1s
interval: TZ=Local 30 0 1 * *(注意时区,默认是UTC时间)
count 非零则意味着触发的次数。
file
# Common config fields, showing default values
input:
label: ""
file:
paths: []
codec: lines
file类型的输入有一个元数据(Metadata) :
- path
元数据是"不可见"的,但是可以可以使用meta("path")方法获得。
参数
paths支持正则表达式;
codec:定义了文件读取的方式,delim:x自定义文件分隔符,lines 一行行读取,没读一行文件,改行文件就会流转到任务执行完毕。
例如读取*.log.gz ,可以将设置为codec: gzip/delim:\n。
max_buffer:文件大小(读取到内存中,压缩包文件需要注意),默认1000000 bytes。
delete_on_finish:文件处理后的操作,是否删除;感觉功能还是不够灵活,只支持是否删除,没有备份到别的目录功能。