worker

package
v1.49.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: MIT Imports: 9 Imported by: 1,141

Documentation

Overview

Package worker contains functions to manage lifecycle of a Temporal client side worker.

Index

Constants

View Source
const (
	// BlockWorkflow is the default WorkflowPanicPolicy policy for handling workflow panics and detected non-determinism.
	// This option causes workflow to get stuck in the workflow task retry loop.
	// It is expected that after the problem is discovered and fixed the workflows are going to continue
	// without any additional manual intervention.
	BlockWorkflow = internal.BlockWorkflow
	// FailWorkflow WorkflowPanicPolicy immediately fails workflow execution if workflow code throws panic or
	// detects non-determinism. This feature is convenient during development.
	// WARNING: enabling this in production can cause all open workflows to fail on a single bug or bad deployment.
	FailWorkflow = internal.FailWorkflow
)

Variables

View Source
var (
	// ErrWorkerShutdown is returned when the worker is shutdown.
	ErrWorkerShutdown = internal.ErrWorkerShutdown
)

Functions

func EnableVerboseLogging

func EnableVerboseLogging(enable bool)

EnableVerboseLogging enable or disable verbose logging of internal Temporal library components. Most customers don't need this feature, unless advised by the Temporal team member. Also there is no guarantee that this API is not going to change.

func InterruptCh added in v0.28.0

func InterruptCh() <-chan any

InterruptCh returns channel which will get data when system receives interrupt signal from OS. Pass it to worker.Run() func to stop worker with Ctrl+C.

func PurgeStickyWorkflowCache added in v1.3.0

func PurgeStickyWorkflowCache()

PurgeStickyWorkflowCache resets the sticky workflow cache. This must be called only when all workers are stopped.

func SetBinaryChecksum

func SetBinaryChecksum(checksum string)

SetBinaryChecksum sets the identifier of the binary(aka BinaryChecksum). The identifier is mainly used in recording reset points when respondWorkflowTaskCompleted. For each workflow, the very first workflow task completed by a binary will be associated as a auto-reset point for the binary. So that when a customer wants to mark the binary as bad, the workflow will be reset to that point -- which means workflow will forget all progress generated by the binary. On another hand, once the binary is marked as bad, the bad binary cannot poll workflow queue and make any progress any more.

func SetStickyWorkflowCacheSize

func SetStickyWorkflowCacheSize(cacheSize int)

SetStickyWorkflowCacheSize sets the cache size for sticky workflow cache. Sticky workflow execution is the affinity between workflow tasks of a specific workflow execution to a specific worker. The benefit of sticky execution is that the workflow does not have to reconstruct state by replaying history from the beginning. The cache is shared between workers running within same process. This must be called before any worker is started. If not called, the default size of 10K (which may change) will be used.

Types

type ActivityRegistry added in v1.3.0

type ActivityRegistry interface {
	// RegisterActivity - register an activity function or a pointer to a structure with the worker.
	// An activity function takes a context and input and returns a (result, error) or just error.
	//
	// An activity struct is a structure with all its exported methods treated as activities. The default
	// name of each activity is the method name.
	//
	// Examples:
	//	func sampleActivity(ctx context.Context, input []byte) (result []byte, err error)
	//	func sampleActivity(ctx context.Context, arg1 int, arg2 string) (result *customerStruct, err error)
	//	func sampleActivity(ctx context.Context) (err error)
	//	func sampleActivity() (result string, err error)
	//	func sampleActivity(arg1 bool) (result int, err error)
	//	func sampleActivity(arg1 bool) (err error)
	//
	//  type Activities struct {
	//     // fields
	//  }
	//  func (a *Activities) SampleActivity1(ctx context.Context, arg1 int, arg2 string) (result *customerStruct, err error) {
	//    ...
	//  }
	//
	//  func (a *Activities) SampleActivity2(ctx context.Context, arg1 int, arg2 *customerStruct) (result string, err error) {
	//    ...
	//  }
	//
	// Serialization of all primitive types, structures is supported ... except channels, functions, variadic, unsafe pointer.
	// This method panics if activityFunc doesn't comply with the expected format or an activity with the same
	// type name is registered more than once.
	// To register function literals (closures), use [ActivityRegistry.RegisterActivityWithOptions] to assign a type name explicitly.
	RegisterActivity(a any)

	// RegisterActivityWithOptions registers the activity function or struct pointer with options.
	// The user can use options to provide an external name for the activity or leave it empty if no
	// external name is required. This can be used as
	//  worker.RegisterActivityWithOptions(barActivity, RegisterActivityOptions{})
	//  worker.RegisterActivityWithOptions(barActivity, RegisterActivityOptions{Name: "barExternal"})
	// When registering the structure that implements activities the name is used as a prefix that is
	// prepended to the activity method name.
	//  worker.RegisterActivityWithOptions(&Activities{ ... }, RegisterActivityOptions{Name: "MyActivities_"})
	// To override each name of activities defined through a structure register the methods one by one:
	// activities := &Activities{ ... }
	// worker.RegisterActivityWithOptions(activities.SampleActivity1, RegisterActivityOptions{Name: "Sample1"})
	// worker.RegisterActivityWithOptions(activities.SampleActivity2, RegisterActivityOptions{Name: "Sample2"})
	// See RegisterActivity function for more info.
	// The other use of options is to disable duplicated activity registration check
	// which might be useful for integration tests.
	// worker.RegisterActivityWithOptions(barActivity, RegisterActivityOptions{DisableAlreadyRegisteredCheck: true})
	RegisterActivityWithOptions(a any, options activity.RegisterOptions)