marina.json; the
handler names a function in your app’s jobs map.
marina.json
marina.jobs.get(runId) returns the run’s state (queued, running,
succeeded, or failed) with attempt and timing metadata.
Delivery
- Delivery is at least once: a handler can run more than once for the same
work, so make its effects idempotent using
context.runId. - A
dedupeKeymakes an enqueue idempotent for the caller: repeating the same key returns the original run instead of creating another. - Handlers retry up to the declared
retrieson failure, withintimeoutSecondsper attempt.
Schedules
schedule is a five-field cron expression, evaluated in UTC. *, comma
lists, ranges, and / steps are supported. If the app was down over an
interval, at most one catch-up run fires, then the schedule advances.
Publishing a new version atomically replaces the previous version’s
schedules. Runs already enqueued finish against the version that created
them.
Limits
Local development
Undermarina dev, enqueued jobs run
immediately in-process so you can watch them work; schedules fire only with
--schedules.