Using xrun

Example of using xrun(https://github.com/gojekfarm/xrun) to manage multiple components in a Go service.

Components can implement the xrun.Component interface or can be wrapped with xrun.ComponentFunc to be used with xrun.

# kafka consumer
consumer := newKafkaConsumer()

# gRPC server
server := newGRPCServer()

# metrics server
metrics := newMetricsServer()

err := xrun.All(
    xrun.NoTimeout,
    consumer,
    server,
    metrics,
)

Blog: https://ajatprabha.in/2023/05/24/intro-xrun-package-managing-component-lifecycle-go