StemApp class

Convenience bootstrap for setting up a Stem runtime with sensible defaults.

Implemented types
Available extensions

Properties

backend ResultBackend
Optional result backend used by the helper.
final
broker QueueBroker
Active broker instance used by the helper.
final
canvas Canvas
Canvas facade used for chains, groups, and chords.
latefinal
hashCode int
The hash code for this object.
no setterinherited
isStarted bool
Whether the managed worker has been started.
no setteroverride
module StemModule?
Optional default bundle registered into this app.
final
registry TaskRegistry
Task registry containing all registered handlers.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
stem Stem
Stem facade used to enqueue tasks.
final
worker Worker
Worker managed by the helper.
final

Methods

close() Future<void>
Alias for shutdown.
createWorkflowApp({StemModule? module, Iterable<StemModule> modules = const [], Iterable<WorkflowDefinition<Object?>> workflows = const [], Iterable<Flow<Object?>> flows = const [], Iterable<WorkflowScript<Object?>> scripts = const [], Iterable<TaskHandler<Object?>> tasks = const [], WorkflowStoreFactory? storeFactory, WorkflowEventBusFactory? eventBusFactory, StemWorkerConfig workerConfig = const StemWorkerConfig(queue: 'workflow'), String? continuationQueue, String? executionQueue, Duration pollInterval = const Duration(milliseconds: 500), Duration leaseExtension = const Duration(seconds: 30), WorkflowRegistry? workflowRegistry, WorkflowIntrospectionSink? introspectionSink}) Future<StemWorkflowApp>

Available on StemApp, provided by the StemAppWorkflowExtension extension

Creates a workflow app on top of this shared task app.
enqueue(String name, {Map<String, Object?> args = const {}, Map<String, String> headers = const {}, TaskOptions options = const TaskOptions(), DateTime? notBefore, Map<String, Object?> meta = const {}, TaskEnqueueOptions? enqueueOptions}) Future<String>
Enqueue a task by name.
override
enqueueCall<TArgs, TResult>(TaskCall<TArgs, TResult> call, {TaskEnqueueOptions? enqueueOptions}) Future<String>
Enqueue a typed task call.
override
enqueueJson<T extends Object>(String name, T argsJson, {Map<String, String> headers = const {}, TaskOptions options = const TaskOptions(), DateTime? notBefore, Map<String, Object?> meta = const {}, TaskEnqueueOptions? enqueueOptions, String? typeName}) Future<String>

Available on TaskEnqueuer, provided by the TaskEnqueuerBuilderExtension extension

Enqueues a name-based task from a DTO that already exposes toJson().
enqueueValue<T>(String name, T value, {Codec<T, Object?>? codec, Map<String, String> headers = const {}, TaskOptions options = const TaskOptions(), DateTime? notBefore, Map<String, Object?> meta = const {}, TaskEnqueueOptions? enqueueOptions}) Future<String>
Enqueue a dynamic-name task using a typed value plus optional codec.
override
enqueueVersionedJson<T extends Object>(String name, T argsJson, {required int version, Map<String, String> headers = const {}, TaskOptions options = const TaskOptions(), DateTime? notBefore, Map<String, Object?> meta = const {}, TaskEnqueueOptions? enqueueOptions, String? typeName}) Future<String>

Available on TaskEnqueuer, provided by the TaskEnqueuerBuilderExtension extension

Enqueues a name-based task from a DTO and persists a schema version beside the JSON payload.
getGroupStatus(String groupId) Future<GroupStatus?>
Reads the latest group status by group id.
override
getTaskStatus(String taskId) Future<TaskStatus?>
Reads the latest task status by task id.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
register(TaskHandler<Object?> handler) → void
Registers an additional task handler with the underlying registry.
registerModule(StemModule module) → void
Registers all task handlers from module into this app.
registerModules(Iterable<StemModule> modules) → void
Registers all task handlers from modules into this app.
registerTask(TaskHandler<Object?> handler) → void
Registers handler with the underlying registry.
registerTasks(Iterable<TaskHandler<Object?>> handlers) → void
Registers handlers with the underlying registry.
runUntilIdle({required Duration budget, Duration shutdownReserve = const Duration(seconds: 5), Duration idleTimeout = const Duration(seconds: 1), Future<void>? cancellation}) Future<WorkerRunOutcome>
Runs a fresh callback-owned application once and disposes owned resources.
shutdown() Future<void>
Permanently shuts down the worker and disposes managed resources once.
override
start() Future<void>
Starts the managed worker if it is not already running.
override
toString() String
A string representation of this object.
inherited
waitForTask<TResult extends Object?>(String taskId, {Duration? timeout, TResult decode(Object? payload)?, TResult decodeJson(Map<String, dynamic> payload)?, TResult decodeVersionedJson(Map<String, dynamic> payload, int version)?}) Future<TaskResult<TResult>?>
Waits for a task result by task id.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

create({StemModule? module, Iterable<StemModule> modules = const [], Iterable<TaskHandler<Object?>> tasks = const [], TaskRegistry? registry, StemBrokerFactory? broker, StemBackendFactory? backend, StemWorkerConfig workerConfig = const StemWorkerConfig(), RevokeStore? revokeStore, UniqueTaskCoordinator? uniqueTaskCoordinator, RetryStrategy? retryStrategy, Iterable<Middleware> middleware = const [], PayloadSigner? signer, RoutingRegistry? routing, TaskPayloadEncoderRegistry? encoderRegistry, TaskPayloadEncoder resultEncoder = const JsonTaskPayloadEncoder(), TaskPayloadEncoder argsEncoder = const JsonTaskPayloadEncoder(), Iterable<TaskPayloadEncoder> additionalEncoders = const []}) Future<StemApp>
Creates a new Stem application with the provided configuration.
fromClient(StemClient client, {StemModule? module, Iterable<StemModule> modules = const [], Iterable<TaskHandler<Object?>> tasks = const [], StemWorkerConfig workerConfig = const StemWorkerConfig()}) Future<StemApp>
Creates a Stem app using a shared StemClient.
fromUrl(String url, {StemModule? module, Iterable<StemModule> modules = const [], Iterable<TaskHandler<Object?>> tasks = const [], TaskRegistry? registry, Iterable<StemStoreAdapter> adapters = const [], StemStoreOverrides overrides = const StemStoreOverrides(), StemWorkerConfig workerConfig = const StemWorkerConfig(), RevokeStore? revokeStore, UniqueTaskCoordinator? uniqueTaskCoordinator, bool uniqueTasks = false, Duration uniqueTaskDefaultTtl = const Duration(minutes: 5), String uniqueTaskNamespace = 'stem:unique', bool requireRevokeStore = false, RetryStrategy? retryStrategy, Iterable<Middleware> middleware = const [], PayloadSigner? signer, RoutingRegistry? routing, TaskPayloadEncoderRegistry? encoderRegistry, TaskPayloadEncoder resultEncoder = const JsonTaskPayloadEncoder(), TaskPayloadEncoder argsEncoder = const JsonTaskPayloadEncoder(), Iterable<TaskPayloadEncoder> additionalEncoders = const [], StemStack? stack}) Future<StemApp>
Creates an app from a single backend URL plus adapter wiring.
inMemory({StemModule? module, Iterable<StemModule> modules = const [], Iterable<TaskHandler<Object?>> tasks = const [], StemWorkerConfig workerConfig = const StemWorkerConfig(), TaskPayloadEncoderRegistry? encoderRegistry, TaskPayloadEncoder resultEncoder = const JsonTaskPayloadEncoder(), TaskPayloadEncoder argsEncoder = const JsonTaskPayloadEncoder(), Iterable<TaskPayloadEncoder> additionalEncoders = const []}) Future<StemApp>
Creates an in-memory Stem application (broker + result backend).