I've currently upgraded to v4 and was leaning heavily on per-tenant queueing before.
Now, this syntax has changed and I'm not sure if I'm still implementing the per-tenant queueing correctly, since the docs still seem to apply the v3 syntax.
How I handle it now in v4:
- Define the queue on task-level:
// Define queue for AdminPulse data updates
const updateAdminPulseQueue = queue({
name: "update-adminpulse-data",
concurrencyLimit: 1,
});
export const updateAdminPulseDataTask = schemaTask({
id: "update-admin-pulse-data",
queue: updateAdminPulseQueue,
schema: payloadSchema,
...
- When batch-executing, only add the queue name and the concurrency key, my expectation is that in this case, multiple tasks of update-adminpulse-data will run at the same time, because one per concurrencyKey is executing.
const batchHandles = await updateAdminPulseDataTask.batchTrigger([
...adminPulseIntegrations.map((integration) => {
return {
payload: {
tenantCode: integration.firm.kindeOrganizationCode,
tenantHandle: integration.firm.kindeOrganizationHandle,
integrationId: integration.integrationId,
featureFlags: {
hasProfitabilityDashboardsMvpFeatureFlag:
integration.hasProfitabilityDashboardsMvpFeatureFlag,
},
},
queue: "update-admin-pulse-data",
concurrencyKey: integration.firm.kindeOrganizationHandle,
idempotencyKey: `update-admin-pulse-data-integration-${integration.integrationId}`,
options: {
tags: [
integration.firm.kindeOrganizationCode,
integration.firm.kindeOrganizationHandle,
`ADMINPULSE_UPDATE:${integration.firm.kindeOrganizationHandle}`,
],
},
};
}),
]);
Is this correct?