From 74a1f7b6b600d4cb53352dde7def374c3125721a Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 5 Oct 2025 07:04:29 +0100 Subject: feat: Restate-based queue plugin (#2011) * WIP: Initial restate integration * add retry * add delay + idempotency * implement concurrency limits * add admin stats * add todos * add id provider * handle onComplete failures * add tests * add pub key and fix logging * add priorities * fail call after retries * more fixes * fix retries left * some refactoring * fix package.json * upgrade sdk * some test cleanups --- packages/plugins-queue-restate/src/idProvider.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 packages/plugins-queue-restate/src/idProvider.ts (limited to 'packages/plugins-queue-restate/src/idProvider.ts') diff --git a/packages/plugins-queue-restate/src/idProvider.ts b/packages/plugins-queue-restate/src/idProvider.ts new file mode 100644 index 00000000..72ebc860 --- /dev/null +++ b/packages/plugins-queue-restate/src/idProvider.ts @@ -0,0 +1,18 @@ +import { Context, object, ObjectContext } from "@restatedev/restate-sdk"; + +export const idProvider = object({ + name: "IdProvider", + handlers: { + get: async (ctx: ObjectContext<{ nextId: number }>): Promise => { + const state = (await ctx.get("nextId")) ?? 0; + ctx.set("nextId", state + 1); + return state; + }, + }, +}); + +export async function genId(ctx: Context) { + return ctx + .objectClient({ name: "IdProvider" }, "IdProvider") + .get(); +} -- cgit v1.2.3-70-g09d2