pub struct Registry { /* private fields */ }Expand description
Registry for orchestrator and activity functions.
Functions must be registered before the worker is started. Versioned
orchestrators can be registered with add_versioned_orchestrator and a
specific version string, or with add_latest_orchestrator to mark a
version as the default when no exact version match is found.
Implementations§
Source§impl Registry
impl Registry
Sourcepub fn add_named_orchestrator<F, Fut>(&mut self, name: &str, f: F)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
pub fn add_named_orchestrator<F, Fut>(&mut self, name: &str, f: F)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
Register an unversioned orchestrator function with the given name.
This is the simplest registration path. When versioning is not required, prefer this method.
Sourcepub fn add_versioned_orchestrator<F, Fut>(
&mut self,
name: &str,
version: &str,
f: F,
)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
pub fn add_versioned_orchestrator<F, Fut>(
&mut self,
name: &str,
version: &str,
f: F,
)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
Register a versioned orchestrator function.
The version is matched against the version field of incoming
ExecutionStarted history events. Use this when you need to run
multiple versions of the same orchestrator simultaneously.
§Examples
use dapr_durabletask::worker::Registry;
let mut reg = Registry::new();
reg.add_versioned_orchestrator("my_orch", "v1", |ctx| async move { Ok(None) });
reg.add_versioned_orchestrator("my_orch", "v2", |ctx| async move { Ok(None) });Sourcepub fn add_latest_orchestrator<F, Fut>(
&mut self,
name: &str,
version: &str,
f: F,
)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
pub fn add_latest_orchestrator<F, Fut>(
&mut self,
name: &str,
version: &str,
f: F,
)where
F: Fn(OrchestrationContext) -> Fut + Send + Sync + 'static,
Fut: Future<Output = OrchestratorResult> + Send + 'static,
Register a versioned orchestrator and mark it as the latest.
The latest entry is selected when no exact version match is found. If multiple entries are marked as latest for the same name, the last one registered wins.
§Examples
use dapr_durabletask::worker::Registry;
let mut reg = Registry::new();
reg.add_versioned_orchestrator("my_orch", "v1", |ctx| async move { Ok(None) });
reg.add_latest_orchestrator("my_orch", "v2", |ctx| async move { Ok(None) });
// Requests for "v1" → v1 handler; any other version → v2 handler.Sourcepub fn add_named_activity<F, Fut>(&mut self, name: &str, f: F)where
F: Fn(ActivityContext, Option<String>) -> Fut + Send + Sync + 'static,
Fut: Future<Output = ActivityResult> + Send + 'static,
pub fn add_named_activity<F, Fut>(&mut self, name: &str, f: F)where
F: Fn(ActivityContext, Option<String>) -> Fut + Send + Sync + 'static,
Fut: Future<Output = ActivityResult> + Send + 'static,
Register an activity function with the given name.
Sourcepub fn get_orchestrator(&self, name: &str) -> Option<&OrchestratorFn>
pub fn get_orchestrator(&self, name: &str) -> Option<&OrchestratorFn>
Look up a registered orchestrator by name and optional version.
Resolution order:
- Exact version match (when
versionisSome). - The entry marked as
is_latestfor this name. - The single unversioned entry (registered via
add_named_orchestrator).
Returns None if no suitable entry is found.
Sourcepub fn get_orchestrator_version(
&self,
name: &str,
version: Option<&str>,
) -> Option<&OrchestratorFn>
pub fn get_orchestrator_version( &self, name: &str, version: Option<&str>, ) -> Option<&OrchestratorFn>
Look up a registered orchestrator by name, optionally constraining the
version. See get_orchestrator for the
resolution rules.
Sourcepub fn get_activity(&self, name: &str) -> Option<&ActivityFn>
pub fn get_activity(&self, name: &str) -> Option<&ActivityFn>
Look up a registered activity by name.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Registry
impl !RefUnwindSafe for Registry
impl Send for Registry
impl Sync for Registry
impl Unpin for Registry
impl UnsafeUnpin for Registry
impl !UnwindSafe for Registry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request