Я создаю 5 соединений с сервисной шиной и помещаю их в массив.Затем, когда новые сообщения продолжают поступать, я получаю одно соединение из массива и использую их для отправки сообщения.Когда я запускаю сервис и запускаю нагрузочный тест, он работает нормально.Некоторое время я оставляю сервис идеальным и снова запускаю тот же нагрузочный тест, он начинает иметь эту ошибку.connect ETIMEDOUT xxx.xxx.xxx.xxx\\n at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
Я не уверен, является ли это хорошим способом кеширования соединения и его повторного использования, которое может вызвать эту проблему, или причиной чего-то другого.
let serviceBusConnectionArray = [];
let executed = false;
let serviceBusService;
let count = 0;
let MAX_CONNECTIONS = 5;
class ServiceBus {
static createConnections(){
if(!executed){
for(let i=0; i< MAX_CONNECTIONS; i++){
serviceBusConnectionArray.push(azure.createServiceBusService(SERVICEBUS_CONNECTION_STRING).withFilter(new azure.ExponentialRetryPolicyFilter()));
}
executed = true;
}
}
static getConnectionString(){
ServiceBus.createConnections();
if(count < MAX_CONNECTIONS){
return serviceBusConnectionArray[count++];
}else{
count = 0;
return serviceBusConnectionArray[count];
}
}
static putMessageToServiceBus(topicName, message) {
return new Promise((resolve, reject) => {
serviceBusService = ServiceBus.getConnectionString();
serviceBusService.sendTopicMessage(topicName, message, function (error) {
if (error) {
log.error('Error in putting message to service bus, message: %s', error.stack);
reject(error);
}
resolve('Message added');
});
});
}
}
Я не уверен, какой маршрут мне выбрать сейчас, чтобы устранить ошибки тайм-аута.