Skip to Content
How-To GuidesRustFire-and-Forget Agent Invocation (Rust)

Fire-and-Forget Agent Invocation (Rust)

Overview

A fire-and-forget call enqueues a method invocation on the target agent and returns immediately without waiting for the result. The target agent processes the invocation asynchronously.

Usage

Every method on the generated <AgentName>Client has a corresponding trigger_ variant:

let counter = CounterAgentClient::get("my-counter".to_string()); // Fire-and-forget — returns immediately counter.trigger_increment(); // With arguments let processor = DataProcessorClient::get("pipeline-1".to_string()); processor.trigger_process_batch(batch_data);

When to Use

  • Breaking RPC cycles: If agent A calls agent B and B needs to call back to A, use trigger_ for the callback to avoid deadlocks
  • Background work: Enqueue work on another agent without blocking the current agent
  • Fan-out: Trigger work on many agents in parallel without waiting for all results
  • Event-driven patterns: Notify other agents about events without coupling to their processing time

Example: Breaking a Deadlock

// In AgentA — calls AgentB and waits let b = AgentBClient::get("b1".to_string()); let result = b.do_work(data).await; // OK: awaited call // In AgentB — notifies AgentA without waiting (would deadlock if awaited) let a = AgentAClient::get("a1".to_string()); a.trigger_on_work_done(result); // OK: fire-and-forget

CLI Equivalent

From the command line, use --trigger:

golem agent invoke --trigger 'CounterAgent("my-counter")' increment
Last updated on