带有nodejs的Azure Service Bus:从队列中获取消息的速度非常慢

时间:2016-12-31 05:38:53

标签: javascript node.js azureservicebus

这是用于处理来自队列的传入消息的回调:

function startListen(){
    serviceBusService.receiveQueueMessage(queueForRequest, {isPeekLock:true},
    function(error, lockedMessage) { handleMessage(error, lockedMessage)} );
}

function handleMessage(err, msg){
    if(typeof msg !== "undefined"){ //if msg has been received, delete it
    serviceBusService.deleteMessage(msg, function(deleteError){
        if(deleteError) console.log('Can not delete message');
    });  
  } 

    if (!err){
    var result = ProcessMessage(msg);
    sendResponse(result);
    }
    else{console.log(err);}

    startListen(); //try get message again
}

这样的代码很糟糕。有时服务器可以从队列中获取消息,但是HandleMessage()通常会将错误作为参数:

  

无法接收消息

最后,一些消息仍未处理。它在听力开始时效果很好,因此我认为问题隐藏在我的代码中。怎么了?

1 个答案:

答案 0 :(得分:0)

我不确定这里的问题以及您正在使用的库。但是,我建议您使用基于AMQP的最新库,这些库更可靠,并且不会出现此类问题。

我知道这是一个较晚的答复,但是以防万一有人遇到问题并降落在此处,请参阅下面的链接。

@azure/service-bus(基于AMQP)的最新版本7.0.0已发布。