mirror of
https://github.com/foomo/keel.git
synced 2025-10-16 12:35:34 +00:00
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package service_test
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/foomo/keel"
|
|
"github.com/foomo/keel/service"
|
|
"github.com/pkg/errors"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func ExampleNewGoRoutine() {
|
|
shutdownAfter(3 * time.Second)
|
|
|
|
svr := keel.NewServer(
|
|
keel.WithLogger(zap.NewExample()),
|
|
)
|
|
|
|
svr.AddService(
|
|
service.NewGoRoutine(svr.Logger(), "demo", func(ctx context.Context, l *zap.Logger) error {
|
|
for {
|
|
// handle graceful shutdowns
|
|
if err := ctx.Err(); errors.Is(context.Cause(ctx), service.ErrServiceShutdown) {
|
|
l.Info("context has been canceled du to graceful shutdow")
|
|
return nil
|
|
} else if err != nil {
|
|
return errors.Wrap(err, "unexpected context error")
|
|
}
|
|
|
|
l.Info("ping")
|
|
time.Sleep(time.Second)
|
|
}
|
|
}),
|
|
)
|
|
|
|
svr.Run()
|
|
|
|
// Output:
|
|
// {"level":"info","msg":"starting keel server"}
|
|
// {"level":"info","msg":"starting keel service","keel_service_type":"goroutine","keel_service_name":"demo"}
|
|
// {"level":"info","msg":"ping","keel_service_type":"goroutine","keel_service_name":"demo","keel_service_inst":0}
|
|
// {"level":"info","msg":"ping","keel_service_type":"goroutine","keel_service_name":"demo","keel_service_inst":0}
|
|
// {"level":"info","msg":"ping","keel_service_type":"goroutine","keel_service_name":"demo","keel_service_inst":0}
|
|
// {"level":"debug","msg":"keel graceful shutdown"}
|
|
// {"level":"info","msg":"stopping keel service","keel_service_type":"goroutine","keel_service_name":"demo"}
|
|
// {"level":"info","msg":"context has been canceled du to graceful shutdow","keel_service_type":"goroutine","keel_service_name":"demo","keel_service_inst":0}
|
|
// {"level":"info","msg":"keel server stopped"}
|
|
}
|