New decoding and framing options for sources

Often, when consuming data from a source, the first operation you have to do on it is decode the data from its source representation. To make this easier, we’ve added new decoding options to most sources.

For example, if you have a kafka source that has JSON-encoded messages, now you can simply add decoding.codec = "json" to your source configuration like:

[sources.kafka]
type = "kafka"
bootstrap_servers = "localhost:9200"
topics = ["my_topic"]
decoding.codec = "json"

This will decode your messages from JSON, thus saving you from an additional remap transform.

In addition, we’ve added a new framing option to allow configuration for sources that have non-standard framing (for example a custom-delimiter separating messages).

For example, if you have an http source where the messages are delimited by commas instead of newlines, you can configure this like:

[sources.http]
type = "http"
address = "0.0.0.0:8080"
framing.method = "character_delimited"
framing.character_delimited.delimiter = ","

To have Vector parse each comma-delimited element as a new message. This can be used with decoding option specified above. See the docs for other framing options.