refactor sending jobs to worker server

This commit is contained in:
Phillip Thelen
2025-05-13 15:02:23 +02:00
parent 389124b83f
commit b00f463db5
2 changed files with 46 additions and 22 deletions

View File

@@ -4,6 +4,7 @@ import { TAVERN_ID } from '../models/group'; // eslint-disable-line import/no-cy
import { encrypt } from './encryption';
import logger from './logger';
import common from '../../common';
import { sendJob } from './worker';
const IS_PROD = nconf.get('IS_PROD');
const EMAIL_SERVER = {
@@ -156,29 +157,14 @@ export async function sendTxn (mailingInfoArray, emailType, variables, personalV
}
if (IS_PROD && mailingInfoArray.length > 0) {
return got.post(`${EMAIL_SERVER.url}/job`, {
retry: 5, // retry the http request to the email server 5 times
timeout: 60000, // wait up to 60s before timing out
username: EMAIL_SERVER.auth.user,
password: EMAIL_SERVER.auth.password,
json: {
type: 'email',
return sendJob('email', {
data: {
emailType,
to: mailingInfoArray,
variables,
personalVariables,
},
options: {
priority: 'high',
attempts: 5,
backoff: { delay: 10 * 60 * 1000, type: 'fixed' },
},
},
}).json().catch(err => logger.error(err, {
extraMessage: 'Error while sending an email.',
emailType,
}));
});
}
return null;

View File

@@ -0,0 +1,38 @@
import got from 'got';
import nconf from 'nconf';
import logger from './logger';
const IS_PROD = nconf.get('IS_PROD');
const EMAIL_SERVER = {
url: nconf.get('EMAIL_SERVER_URL'),
auth: {
user: nconf.get('EMAIL_SERVER_AUTH_USER'),
password: nconf.get('EMAIL_SERVER_AUTH_PASSWORD'),
},
};
export function sendJob (type, config) {
if (IS_PROD) {
const { data, options } = config;
const usedOptions = {
priority: 'high',
backoff: { delay: 10 * 60 * 1000, type: 'exponential' },
...options,
};
return got.post(`${EMAIL_SERVER.url}/job`, {
retry: 5, // retry the http request to the email server 5 times
timeout: 60000, // wait up to 60s before timing out
username: EMAIL_SERVER.auth.user,
password: EMAIL_SERVER.auth.password,
json: {
type,
data,
options: usedOptions,
},
}).json().catch(err => logger.error(err, {
extraMessage: 'Error while sending an email.',
}));
}
return null;
}