Skip to main content

generate

Generates messages at a given interval using a Bloblang mapping executed without a context. This allows you to generate messages for testing your pipeline configs.

Introduced in version 3.40.0.

# Config fields, showing default values
input:
label: ""
generate:
mapping: ""
interval: 1s
count: 0

Fields#

mapping#

A bloblang mapping to use for generating messages.

Type: string
Default: ""

# Examples
mapping: root = "hello world"
mapping: root = {"test":"message","id":uuid_v4()}

interval#

The time interval at which messages should be generated, expressed either as a duration string or as a cron expression. If set to an empty string messages will be generated as fast as downstream services can process them. Cron expressions can specify a timezone by prefixing the expression with TZ=<location name>, where the location name corresponds to a file within the IANA Time Zone database.

Type: string
Default: "1s"

# Examples
interval: 5s
interval: 1m
interval: 1h
interval: '@every 1s'
interval: 0,30 */2 * * * *
interval: TZ=Europe/London 30 3-6,20-23 * * *

count#

An optional number of messages to generate, if set above 0 the specified number of messages is generated and then the input will shut down.

Type: int
Default: 0

Examples#

A common use case for the generate input is to trigger processors on a schedule so that the processors themselves can behave similarly to an input. The following configuration reads rows from a PostgreSQL table every 5 minutes.

input:
generate:
interval: '@every 5m'
mapping: 'root = {}'
processors:
- sql:
driver: postgresql
data_source_name: postgres://foouser:foopass@localhost:5432/testdb?sslmode=disable
query: "select * from foo;"
result_codec: json_array