pub async fn process_rows<H: OutboxHandler>(
handler: &H,
rows: &[OutboxRow],
base_backoff: Duration,
max_attempts: i32,
) -> Vec<OutboxAction>Expand description
Run the handler over claimed rows and decide per-row follow-up.
Pure decision logic extracted from OutboxDrainer::drain_once so
delivery semantics are unit-testable without a database.