-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
67 lines (57 loc) · 1.76 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"context"
"fmt"
"os"
"time"
faktory "github.com/contribsys/faktory/client"
worker "github.com/contribsys/faktory_worker_go"
"github.com/kamva/gutil"
"github.com/kamva/hexa"
hjob "github.com/kamva/hexa-job"
hexafaktory "github.com/kamva/hexa-job/faktory"
hexarobfig "github.com/kamva/hexa-job/robfig"
"github.com/kamva/hexa/hexatranslator"
"github.com/kamva/hexa/hlog"
"github.com/robfig/cron/v3"
)
func init() {
_ = os.Setenv("FAKTORY_PROVIDER", "FAKTORY_URL")
_ = os.Setenv("FAKTORY_URL", "tcp://localhost:7419")
}
var logger = hlog.NewPrinterDriver(hlog.DebugLevel)
var translator = hexatranslator.NewEmptyDriver()
var propagator = hexa.NewContextPropagator(logger, translator)
var cronJobName = "example-cron-job"
func main() {
client, err := faktory.NewPool(12)
w := worker.NewManager()
gutil.PanicErr(err)
jobs := hexafaktory.NewFaktoryJobsDriver(client, propagator)
jobWorker := hexafaktory.NewFaktoryWorkerDriver(w, propagator)
cronInstance := cron.New()
cronJobs := hexarobfig.NewCronJobPusher(hexarobfig.CronJobsOptions{
CtxGenerator: ctxGenerator,
Cron: cronInstance,
Jobs: jobs,
Worker: jobWorker,
Logger: logger,
})
gutil.PanicErr(cronJobs.Register("@every 3s", hjob.NewCronJob(cronJobName), sayHello))
gutil.PanicErr(cronJobs.Run())
gutil.PanicErr(jobWorker.Run())
}
func ctxGenerator(ctx context.Context) context.Context {
return hexa.NewContext(ctx, hexa.ContextParams{
CorrelationId: "test-cron-correlation-id",
Locale: "en",
User: hexa.NewGuest(),
BaseLogger: logger,
BaseTranslator: translator,
})
}
func sayHello(ctx context.Context) error {
fmt.Println("hello from cron job :) at:", time.Now())
fmt.Println(hexa.CtxCorrelationId(ctx))
return nil
}