ЦИТК-37 - Добавлена возможность использования прокси при отправке
This commit is contained in:
parent
4ff7fdeb66
commit
6908166e48
@ -48,7 +48,9 @@ let outGoing = {
|
||||
//Максимальный размер пула подключений к БД для обработчика исходящих сообщений
|
||||
nPoolMax: 4,
|
||||
//Шаг инкремента подключений к БД в пуле обработчика исходящих сообщений
|
||||
nPoolIncrement: 0
|
||||
nPoolIncrement: 0,
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: null
|
||||
};
|
||||
|
||||
//Параметры обработки очереди входящих сообщений
|
||||
|
@ -93,7 +93,7 @@ class ParusAppServer {
|
||||
async onOutQStarted() {
|
||||
//Сообщим, что запустили обработчик
|
||||
await this.logger.info("Обработчик очереди исходящих сообщений запущен");
|
||||
//Запускаем бслуживание очереди входящих
|
||||
//Запускаем обслуживание очереди входящих
|
||||
await this.logger.info("Запуск обработчика очереди входящих сообщений...");
|
||||
try {
|
||||
this.inQ.startProcessing({ services: this.services });
|
||||
@ -217,7 +217,8 @@ class ParusAppServer {
|
||||
outGoing: prms.config.outGoing,
|
||||
dbConn: this.dbConn,
|
||||
logger: this.logger,
|
||||
notifier: this.notifier
|
||||
notifier: this.notifier,
|
||||
sProxy: prms.config.outGoing.sProxy
|
||||
});
|
||||
//Создаём обработчик очереди входящих
|
||||
this.inQ = new iq.InQueue({
|
||||
@ -231,7 +232,8 @@ class ParusAppServer {
|
||||
this.srvAvlCtrl = new sac.ServiceAvailableController({
|
||||
logger: this.logger,
|
||||
notifier: this.notifier,
|
||||
dbConn: this.dbConn
|
||||
dbConn: this.dbConn,
|
||||
sProxy: prms.config.outGoing.sProxy
|
||||
});
|
||||
//Скажем что инициализировали
|
||||
await this.logger.info("Сервер приложений инициализирован");
|
||||
|
@ -64,6 +64,8 @@ class OutQueue extends EventEmitter {
|
||||
this.logger = prms.logger;
|
||||
//Запомним уведомитель
|
||||
this.notifier = prms.notifier;
|
||||
//Запомним глобальный адрес прокси-сервера
|
||||
this.sProxy = prms.sProxy;
|
||||
//Список обрабатываемых в текущий момент сообщений очереди
|
||||
this.inProgress = [];
|
||||
//Привяжем методы к указателю на себя для использования в обработчиках событий
|
||||
@ -160,7 +162,8 @@ class OutQueue extends EventEmitter {
|
||||
service: _.find(this.services, { nId: prms.queue.nServiceId }),
|
||||
function: _.find(_.find(this.services, { nId: prms.queue.nServiceId }).functions, {
|
||||
nId: prms.queue.nServiceFnId
|
||||
})
|
||||
}),
|
||||
sProxy: this.sProxy
|
||||
});
|
||||
//Уменьшаем количество доступных обработчиков
|
||||
this.nWorkersLeft--;
|
||||
|
@ -145,9 +145,10 @@ const appProcess = async prms => {
|
||||
sQuery: prms.queue.blMsg === null ? "" : prms.queue.blMsg.toString()
|
||||
});
|
||||
}
|
||||
/* Установим прокси, если требуется */
|
||||
if (prms.service.sProxyURL) {
|
||||
options.proxy = prms.service.sProxyURL;
|
||||
// Если у сервиса указан прокси, либо у приложения установлен глобальный прокси
|
||||
if (prms.service.sProxyURL || prms.sProxy) {
|
||||
// Добавляем прокси с приоритетом сервиса
|
||||
options.proxy = prms.service.sProxyURL ?? prms.sProxy;
|
||||
}
|
||||
//Дополним получившиеся параметры переданными в сообщении
|
||||
if (prms.queue.sOptions) {
|
||||
@ -513,7 +514,8 @@ const processTask = async prms => {
|
||||
let res = await appProcess({
|
||||
queue: q,
|
||||
service: prms.task.service,
|
||||
function: prms.task.function
|
||||
function: prms.task.function,
|
||||
sProxy: prms.task.sProxy
|
||||
});
|
||||
//Если результат обработки ошибка - пробрасываем её дальше
|
||||
if (res instanceof ServerError) {
|
||||
|
@ -67,6 +67,8 @@ class ServiceAvailableController extends EventEmitter {
|
||||
this.logger = prms.logger;
|
||||
//Запомним подключение к БД
|
||||
this.dbConn = prms.dbConn;
|
||||
//Запомним глобальный адрес прокси-сервера
|
||||
this.sProxy = prms.sProxy;
|
||||
//Привяжем методы к указателю на себя для использования в обработчиках событий
|
||||
this.serviceDetectingLoop = this.serviceDetectingLoop.bind(this);
|
||||
} else {
|
||||
@ -110,8 +112,18 @@ class ServiceAvailableController extends EventEmitter {
|
||||
service.nSrvType == objServiceSchema.NSRV_TYPE_SEND
|
||||
) {
|
||||
try {
|
||||
// Инициализируем параметры запроса
|
||||
let options = {};
|
||||
// Устанавливаем параметры запроса
|
||||
options.url = service.sSrvRoot;
|
||||
options.timeout = NNETWORK_CHECK_TIMEOUT;
|
||||
// Если у сервиса указан прокси, либо у приложения установлен глобальный прокси
|
||||
if (service.sProxyURL || this.sProxy) {
|
||||
// Добавляем прокси с приоритетом сервиса
|
||||
options.proxy = service.sProxyURL ?? this.sProxy;
|
||||
}
|
||||
//Отправляем проверочный запрос
|
||||
await rqp({ url: service.sSrvRoot, timeout: NNETWORK_CHECK_TIMEOUT });
|
||||
await rqp(options);
|
||||
//Запрос прошел - фиксируем дату доступности и сбрасываем дату недоступности
|
||||
service.dAvailable = new Date();
|
||||
service.dUnAvailable = null;
|
||||
|
@ -77,6 +77,16 @@ const common = new Schema({
|
||||
validateTerminateTimeout: path =>
|
||||
`Таймаут останова сервера (${path}) должен быть целым числом в диапазоне от 1000 до 120000`
|
||||
}
|
||||
},
|
||||
//Контроль версии Системы
|
||||
bControlSystemVersion: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
message: {
|
||||
type: path =>
|
||||
`Признак контроля версии Системы (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||||
required: path => `Не указан признак контроля версии Системы (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -220,6 +230,17 @@ const outGoing = new Schema({
|
||||
validatePoolIncrementOutGoing: path =>
|
||||
`Значение шага инкремента подключений к БД в пуле обработчика исходящих сообщений (${path}) должно быть целым числом в диапазоне от 0 до 10`
|
||||
}
|
||||
},
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: {
|
||||
type: String,
|
||||
required: false,
|
||||
message: {
|
||||
type: path =>
|
||||
`Адрес прокси-сервера приложения (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||||
required: path =>
|
||||
`Не указан глобальный адрес прокси-сервера (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -65,6 +65,15 @@ exports.OutQueueProcessorTask = new Schema({
|
||||
message: {
|
||||
required: path => `Не указана функция сервиса для обработки сообщения очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: {
|
||||
type: String,
|
||||
required: false,
|
||||
message: {
|
||||
type: path => `Глобальный адрес прокси-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||||
required: path => `Не указан глобальный адрес прокси-сервера (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -66,6 +66,15 @@ exports.OutQueue = new Schema({
|
||||
`Объект для рассылки уведомлений (${path}) имеет некорректный тип данных (ожидалось - Notifier)`,
|
||||
required: path => `Не указан объект для рассылки уведомлений (${path})`
|
||||
}
|
||||
},
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: {
|
||||
type: String,
|
||||
required: false,
|
||||
message: {
|
||||
type: path => `Глобальный адрес прокси-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||||
required: path => `Не указан глобальный адрес прокси-сервера (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -37,7 +37,7 @@ exports.appProcess = new Schema({
|
||||
schema: Queue,
|
||||
required: true,
|
||||
message: {
|
||||
required: path => `Не указано обрабатываемое сообщение очреди (${path})`
|
||||
required: path => `Не указано обрабатываемое сообщение очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Cервис-обработчик
|
||||
@ -55,6 +55,15 @@ exports.appProcess = new Schema({
|
||||
message: {
|
||||
required: path => `Не указана функция сервиса для обработки сообщения очереди (${path})`
|
||||
}
|
||||
},
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: {
|
||||
type: String,
|
||||
required: false,
|
||||
message: {
|
||||
type: path => `Глобальный адрес прокси-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||||
required: path => `Не указан глобальный адрес прокси-сервера (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -48,6 +48,16 @@ exports.ServiceAvailableController = new Schema({
|
||||
`Объект для взаимодействия с БД (${path}) имеет некорректный тип данных (ожидалось - DBConnector)`,
|
||||
required: path => `Не указан объект для взаимодействия с БД (${path})`
|
||||
}
|
||||
},
|
||||
//Глобальный адрес прокси-сервера
|
||||
sProxy: {
|
||||
type: String,
|
||||
required: false,
|
||||
message: {
|
||||
type: path =>
|
||||
`Глобальный адрес прокси-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||||
required: path => `Не указан глобальный адрес прокси-сервера (${path})`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user