fix queue failing for certain edge cases (#51)
This commit is contained in:
@@ -21,8 +21,11 @@ import { toast } from "@unsend/ui/src/toaster";
|
|||||||
const FormSchema = z.object({
|
const FormSchema = z.object({
|
||||||
region: z.string(),
|
region: z.string(),
|
||||||
unsendUrl: z.string().url(),
|
unsendUrl: z.string().url(),
|
||||||
sendRate: z.number(),
|
sendRate: z.preprocess((val) => Number(val), z.number()),
|
||||||
transactionalQuota: z.number().min(0).max(100),
|
transactionalQuota: z.preprocess(
|
||||||
|
(val) => Number(val),
|
||||||
|
z.number().min(0).max(100)
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
type SesSettingsProps = {
|
type SesSettingsProps = {
|
||||||
|
@@ -54,14 +54,19 @@ export class EmailQueueService {
|
|||||||
);
|
);
|
||||||
const transactionalWorker = this.transactionalWorker.get(region);
|
const transactionalWorker = this.transactionalWorker.get(region);
|
||||||
if (transactionalWorker) {
|
if (transactionalWorker) {
|
||||||
transactionalWorker.concurrency = transactionalQuota;
|
transactionalWorker.concurrency =
|
||||||
|
transactionalQuota !== 0 ? transactionalQuota : 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
`[EmailQueueService]: Creating transactional queue for region ${region} with quota ${transactionalQuota}`
|
`[EmailQueueService]: Creating transactional queue for region ${region} with quota ${transactionalQuota}`
|
||||||
);
|
);
|
||||||
const { queue: transactionalQueue, worker: transactionalWorker } =
|
const { queue: transactionalQueue, worker: transactionalWorker } =
|
||||||
createQueueAndWorker(region, transactionalQuota ?? 1, "transaction");
|
createQueueAndWorker(
|
||||||
|
region,
|
||||||
|
transactionalQuota !== 0 ? transactionalQuota : 1,
|
||||||
|
"transaction"
|
||||||
|
);
|
||||||
this.transactionalQueue.set(region, transactionalQueue);
|
this.transactionalQueue.set(region, transactionalQueue);
|
||||||
this.transactionalWorker.set(region, transactionalWorker);
|
this.transactionalWorker.set(region, transactionalWorker);
|
||||||
}
|
}
|
||||||
@@ -72,14 +77,18 @@ export class EmailQueueService {
|
|||||||
);
|
);
|
||||||
const marketingWorker = this.marketingWorker.get(region);
|
const marketingWorker = this.marketingWorker.get(region);
|
||||||
if (marketingWorker) {
|
if (marketingWorker) {
|
||||||
marketingWorker.concurrency = marketingQuota;
|
marketingWorker.concurrency = marketingQuota !== 0 ? marketingQuota : 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
`[EmailQueueService]: Creating marketing queue for region ${region} with quota ${marketingQuota}`
|
`[EmailQueueService]: Creating marketing queue for region ${region} with quota ${marketingQuota}`
|
||||||
);
|
);
|
||||||
const { queue: marketingQueue, worker: marketingWorker } =
|
const { queue: marketingQueue, worker: marketingWorker } =
|
||||||
createQueueAndWorker(region, marketingQuota ?? 1, "marketing");
|
createQueueAndWorker(
|
||||||
|
region,
|
||||||
|
marketingQuota !== 0 ? marketingQuota : 1,
|
||||||
|
"marketing"
|
||||||
|
);
|
||||||
this.marketingQueue.set(region, marketingQueue);
|
this.marketingQueue.set(region, marketingQueue);
|
||||||
this.marketingWorker.set(region, marketingWorker);
|
this.marketingWorker.set(region, marketingWorker);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user