【发布时间】:2020-12-15 03:18:04
【问题描述】:
我正在创建 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');
});
});
}
}
我不确定我现在应该选择什么路由来解决这个超时错误。
【问题讨论】:
标签: node.js azure azureservicebus