package
1.17.16
Repository: https://github.com/golangid/candi.git
Documentation: pkg.go.dev

# README

Example

Create delivery handler

package workerhandler

import (
	"context"
	"fmt"
	"time"

	"github.com/golangid/candi/candishared"
	cronworker "github.com/golangid/candi/codebase/app/cron_worker"
	"github.com/golangid/candi/codebase/factory/types"
	"github.com/golangid/candi/logger"
	"github.com/golangid/candi/tracer"
)

// CronHandler struct
type CronHandler struct {
}

// NewCronHandler constructor
func NewCronHandler() *CronHandler {
	return &CronHandler{}
}

// MountHandlers return group map topic key to handler func
func (h *CronHandler) MountHandlers(group *types.WorkerHandlerGroup) {

	group.Add(cronworker.CreateCronJobKey("push-notif", "message", "30s"), h.handleJob1)
	group.Add(cronworker.CreateCronJobKey("heavy-push-notif", "message", "22:43:07"), h.handleJob2)
}

func (h *CronHandler) handleJob1(eventContext *candishared.EventContext) error {
	trace := tracer.StartTrace(eventContext.Context(), "DeliveryCronWorker:HandleJob1")
	defer trace.Finish()

	logger.LogI("running...")
	return nil
}

func (h *CronHandler) handleJob2(eventContext *candishared.EventContext) error {
	trace := tracer.StartTrace(eventContext.Context(), "DeliveryCronWorker:HandleJob2")
	defer trace.Finish()

	fmt.Println("processing")
	time.Sleep(30 * time.Second)
	fmt.Println("done")
	return nil
}

Register in module

package examplemodule

import (

	"example.service/internal/modules/examplemodule/delivery/workerhandler"

	"github.com/golangid/candi/codebase/factory/dependency"
	"github.com/golangid/candi/codebase/factory/types"
	"github.com/golangid/candi/codebase/interfaces"
)

type Module struct {
	// ...another delivery handler
	workerHandlers map[types.Worker]interfaces.WorkerHandler
}

func NewModules(deps dependency.Dependency) *Module {
	return &Module{
		workerHandlers: map[types.Worker]interfaces.WorkerHandler{
			// ...another worker handler
			// ...
			types.Scheduler: workerhandler.NewCronHandler(),
		},
	}
}

// ...another method

# Functions

CreateCronJobKey helper Allowed interval: * cron expression, example: * * * * * * standard time duration string, example: 2s, 10m * custom start time and repeat duration, example: - 23:00@daily, will repeated at 23:00 every day - 23:00@weekly, will repeated at 23:00 every week - 23:00@10s, will repeated at 23:00 and next repeat every 10 seconds */.
NewWorker create new cron worker.
ParseCronJobKey helper.
SetDebugMode option func.
SetLocker option func.
SetMaxGoroutines option func.

# Structs

CronJobKey model.
Job model.

# Type aliases

No description provided by the author