package krabkastreams

import "github.com/krabka-io/krabka-streams-go"

Package krabkastreams applies the client settings that a krabka streams group needs.

krabka brokers coordinate stream processing applications through the streams group protocol (KIP-1071). The only krabka-specific configuration step is to enable that protocol, which WithDefaults does for you while leaving every setting you supply untouched.

The helper operates on a plain string-keyed configuration map, the shape used by librdkafka-based clients such as confluent-kafka-go. Clients that take typed options instead can use the exported constants directly.

Index

Constants

const GroupProtocolConfig = "group.protocol"

GroupProtocolConfig is the Kafka client configuration key that selects the group protocol.

const StreamsGroupProtocol = "streams"

StreamsGroupProtocol is the group.protocol value that enables the streams group protocol.

Functions

func WithDefaults source

func WithDefaults(settings map[string]any) map[string]any

WithDefaults copies the supplied settings and adds krabka defaults. Explicit settings keep their values.

Currently the only default is GroupProtocolConfig set to StreamsGroupProtocol. The supplied map is not modified; a nil map is treated as empty.

Example
package main

import (
    "fmt"

    krabkastreams "github.com/krabka-io/krabka-streams-go"
)

func main() {
    settings := krabkastreams.WithDefaults(map[string]any{
        "bootstrap.servers": "localhost:9092",
        "group.id":          "order-counter",
    })

    fmt.Println(settings[krabkastreams.GroupProtocolConfig])
}

Output:

streams
Example (explicitSettingsWin)
package main

import (
    "fmt"

    krabkastreams "github.com/krabka-io/krabka-streams-go"
)

func main() {
    settings := krabkastreams.WithDefaults(map[string]any{
        krabkastreams.GroupProtocolConfig: "classic",
    })

    fmt.Println(settings[krabkastreams.GroupProtocolConfig])
}

Output:

classic