Skip to main content

TaskHubGrpcWorker

Struct TaskHubGrpcWorker 

Source
pub struct TaskHubGrpcWorker { /* private fields */ }
Expand description

Worker that connects to a Durable Task sidecar and processes work items.

The worker opens a streaming gRPC connection to receive orchestrator and activity work items, dispatches them to registered handler functions, and returns results to the sidecar.

§Example

use dapr_durabletask::worker::TaskHubGrpcWorker;
use dapr_durabletask::task::OrchestrationContext;

let mut worker = TaskHubGrpcWorker::new("http://localhost:4001");
worker.registry_mut().add_named_orchestrator("my_orch", |ctx: OrchestrationContext| async move {
    let result = ctx.call_activity("greet", "world").await?;
    Ok(result)
});
worker.registry_mut().add_named_activity("greet", |_ctx, input| async move {
    Ok(input)
});

let shutdown = tokio_util::sync::CancellationToken::new();
// worker.start(shutdown).await.unwrap();

Implementations§

Source§

impl TaskHubGrpcWorker

Source

pub fn new(host_address: &str) -> Self

Create a new worker that will connect to the given sidecar address.

Source

pub fn with_options(host_address: &str, options: WorkerOptions) -> Self

Create a new worker with custom options.

Source

pub fn registry_mut(&mut self) -> &mut Registry

Get a mutable reference to the registry for adding orchestrators and activities.

§Panics

Panics if called after the registry has been shared (i.e., after start() has begun processing).

Source

pub async fn start(&self, shutdown: CancellationToken) -> Result<()>

Start the worker. Runs until the cancellation token is triggered or the reconnect policy’s max_attempts is exhausted.

§Shutdown behaviour

When the cancellation token is fired:

  1. The worker stops reading new work items from the sidecar stream.
  2. It waits for all in-flight tasks (orchestrations and activities already dispatched) to complete and send their results to the sidecar before returning.

This guarantees that no already-accepted work item is abandoned at shutdown. Work items still queued inside the sidecar but not yet dispatched to this worker are unaffected — the sidecar will re-dispatch them to the next available worker.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more