Skip to content

Commit 7e5b234

Browse files
authored
Release/0.4.0 (#15)
* chore: upgrade github * chore: refactoring worker engine * fix: example app name * chore: refactoring continously task example * chore: add todo comment * feat: handle continously run task and retry * chore: remove unused code * chore: close channels on shutdown * feat: add event bus integration
1 parent 1c855c0 commit 7e5b234

File tree

21 files changed

+334
-217
lines changed

21 files changed

+334
-217
lines changed

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,10 @@ go.work
2323
# Avoid commit test binaries
2424
examples/web_app/web_app
2525
examples/worker_run_once_task/worker_run_once_task
26-
examples/worker_run_continously_task/worker_run_continously_task
26+
examples/worker_run_continously_task/worker_run_continously_task
27+
examples/worker_run_retry_task/worker_run_retry_task
28+
examples/web_app_create_task/web_app_create_task
29+
30+
31+
# Ignore all .DS_Store files
32+
.DS_Store

app.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type AppConfig struct {
1919
HealthCheck *HealthCheck
2020
WebApp *WebApp
2121
Worker *Worker
22+
EventBus *EventBus
2223
ShutdownTimeout time.Duration
2324
}
2425

@@ -45,6 +46,10 @@ func NewApp(config *AppConfig) *App {
4546
config.ShutdownTimeout = 10 * time.Second
4647
}
4748

49+
config.EventBus = NewEventBus(
50+
&EventBusConfig{},
51+
)
52+
4853
return &App{
4954
config,
5055
}
@@ -62,6 +67,7 @@ func (app *App) Run() error {
6267

6368
var healthCheckServer *http.Server
6469
var webAppServer *http.Server
70+
var workerServer *WorkerServer
6571

6672
signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
6773

@@ -104,25 +110,35 @@ func (app *App) Run() error {
104110
}
105111

106112
if app.Worker != nil {
107-
go func(w *Worker) {
108-
log.Info().Msg("starting worker")
109-
w.Start()
110-
}(app.Worker)
113+
workerServer = NewWorkerServer()
114+
go func() {
115+
log.Info().Msg("starting worker server")
116+
ctx := context.Background()
117+
workerServer.Start(ctx, app.Worker)
118+
}()
111119
}
112120

113121
<-shutdown
114122

115123
shutdownCtx, cancel := context.WithTimeout(context.Background(), app.ShutdownTimeout)
116124
defer cancel()
117125

118-
if err := webAppServer.Shutdown(shutdownCtx); err != nil {
119-
log.Fatal().Err(err).Msg("main server shutdown failed")
120-
}
121-
122126
if err := healthCheckServer.Shutdown(shutdownCtx); err != nil {
123127
log.Fatal().Err(err).Msg("health check server shutdown failed")
124128
}
125129

130+
if app.WebApp != nil && webAppServer != nil {
131+
if err := webAppServer.Shutdown(shutdownCtx); err != nil {
132+
log.Fatal().Err(err).Msg("main server shutdown failed")
133+
}
134+
}
135+
136+
if app.Worker != nil && workerServer != nil {
137+
if err := workerServer.Shutdown(shutdownCtx); err != nil {
138+
log.Fatal().Err(err).Msg("worker shutdown failed")
139+
}
140+
}
141+
126142
log.Info().Msg("shutdown complete")
127143

128144
return nil

examples/web_app/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ replace github.com/fandujar/golaze => ../..
66

77
require github.com/fandujar/golaze v0.0.0-20220304185514-3e3e3e3e3e3e
88

9-
require github.com/rs/zerolog v1.32.0
9+
require github.com/rs/zerolog v1.33.0 // indirect
1010

1111
require (
12-
github.com/go-chi/chi/v5 v5.0.12 // indirect
12+
github.com/go-chi/chi/v5 v5.1.0 // indirect
1313
github.com/mattn/go-colorable v0.1.13 // indirect
1414
github.com/mattn/go-isatty v0.0.19 // indirect
15-
golang.org/x/sys v0.17.0 // indirect
15+
golang.org/x/sys v0.21.0 // indirect
1616
)

examples/web_app/go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2-
github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s=
3-
github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
2+
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
3+
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
44
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
55
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
66
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
@@ -9,10 +9,10 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP
99
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1010
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
1111
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
12-
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
13-
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
12+
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
13+
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
1414
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1515
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1616
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17-
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
18-
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
17+
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
18+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module github.com/fandujar/golaze/examples/web_app_create_task
2+
3+
go 1.22.1
4+
5+
replace github.com/fandujar/golaze => ../..
6+
7+
require github.com/fandujar/golaze v0.0.0-20220304185514-3e3e3e3e3e3e
8+
9+
require github.com/rs/zerolog v1.33.0 // indirect
10+
11+
require (
12+
github.com/go-chi/chi/v5 v5.1.0 // indirect
13+
github.com/mattn/go-colorable v0.1.13 // indirect
14+
github.com/mattn/go-isatty v0.0.19 // indirect
15+
golang.org/x/sys v0.21.0 // indirect
16+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2+
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
3+
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
4+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
5+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
6+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
7+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
8+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
9+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
10+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
11+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
12+
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
13+
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
14+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
16+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17+
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
18+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
"time"
7+
8+
"github.com/fandujar/golaze"
9+
)
10+
11+
func main() {
12+
app := golaze.NewApp(
13+
&golaze.AppConfig{
14+
Name: "Web App",
15+
},
16+
)
17+
18+
app.WebApp = golaze.NewWebApp(
19+
&golaze.WebAppConfig{},
20+
)
21+
22+
app.Worker = golaze.NewWorker(
23+
&golaze.WorkerConfig{
24+
EventBus: app.EventBus,
25+
},
26+
)
27+
28+
app.WebApp.Router.Get("/", func(w http.ResponseWriter, r *http.Request) {
29+
task := golaze.NewTask(
30+
&golaze.TaskConfig{
31+
Name: "task once run thru http",
32+
Timeout: 3 * time.Second,
33+
Exec: func(state *golaze.State, cancel chan bool) error {
34+
fmt.Println("running task example")
35+
36+
return nil
37+
},
38+
})
39+
40+
event := &golaze.Event{
41+
Data: task,
42+
}
43+
44+
app.EventBus.Publish("task", event)
45+
})
46+
47+
app.Run()
48+
49+
}

examples/worker_run_continously_task/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ replace github.com/fandujar/golaze => ../..
77
require github.com/fandujar/golaze v0.1.0
88

99
require (
10-
github.com/go-chi/chi/v5 v5.0.12 // indirect
10+
github.com/go-chi/chi/v5 v5.1.0 // indirect
1111
github.com/mattn/go-colorable v0.1.13 // indirect
1212
github.com/mattn/go-isatty v0.0.19 // indirect
13-
github.com/rs/zerolog v1.32.0 // indirect
14-
golang.org/x/sys v0.17.0 // indirect
13+
github.com/rs/zerolog v1.33.0 // indirect
14+
golang.org/x/sys v0.21.0 // indirect
1515
)
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2-
github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s=
3-
github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
2+
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
3+
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
44
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
55
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
66
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
@@ -9,10 +9,10 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP
99
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1010
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
1111
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
12-
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
13-
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
12+
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
13+
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
1414
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1515
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1616
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17-
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
18-
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
17+
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
18+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=

examples/worker_run_continously_task/main.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,20 @@ import (
88
)
99

1010
func main() {
11-
worker := golaze.NewWorker(
12-
&golaze.WorkerConfig{},
11+
app := golaze.NewApp(
12+
&golaze.AppConfig{
13+
Name: "Worker Continously Run Task",
14+
Worker: golaze.NewWorker(
15+
&golaze.WorkerConfig{},
16+
),
17+
},
1318
)
1419

1520
task := golaze.NewTask(
1621
&golaze.TaskConfig{
1722
Name: "task run forever",
1823
Repeat: -1,
19-
RepeatDelay: 10,
24+
RepeatDelay: 10 * time.Second,
2025
Timeout: 15 * time.Second,
2126
Exec: func(state *golaze.State, cancel chan bool) error {
2227
if state.Get("counter") == nil {
@@ -30,9 +35,6 @@ func main() {
3035
},
3136
})
3237

33-
worker.AddTask(task)
34-
go worker.Start()
35-
36-
// wait for the worker to finish
37-
worker.WaitShutdown()
38+
app.Worker.Tasks = append(app.Worker.Tasks, task)
39+
app.Run()
3840
}

0 commit comments

Comments
 (0)