【问题标题】:ETIMEOUT error with servicebus connection while using topics使用主题时服务总线连接出现 ETIMEOUT 错误
【发布时间】: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


    【解决方案1】:

    查看azure-sdk-for-node 的源代码,特别是按顺序查看这些行

    SDK 只是通过其REST API 向服务总线执行 REST 请求。所以,我真的不认为汇集这些对象真的有帮助。

    超时似乎是 SDK 使用的 request npm 模块在该时间点引发的真正超时。

    您可能可以尝试newer SDK,它在后台使用 amqp 连接到服务总线。请注意,此 SDK 处于预览阶段。

    【讨论】:

    • 感谢您的更新。我现在使用较新的 SDK。到目前为止一切顺利。
    【解决方案2】:

    正如 PramodValavala-MSFT 在另一个答案中提到的@azure/service-bus SDK,@azure/service-bus SDK(在预览中)的主要版本 7.0.0 依赖于 AMQP 最近已发布。

    ServiceBusClient的每个实例代表一个连接,ServiceBusClient下的所有方法都使用同一个连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2018-05-29
      • 2021-01-24
      • 2017-02-14
      相关资源
      最近更新 更多