我與此代碼的工作消息從隊列中接收消息:Azure的ServiceBus:不能接收隊列
function startReceiver(){
serviceBusService.getQueue(configurations.queueForRequest, function(err, queue){
if(!err){
var length = queue.CountDetails['d2p1:ActiveMessageCount'];//get count of active messages
if(length > 0) {
serviceBusService.receiveQueueMessage(configurations.queueForRequest, {isPeekLock:true},
function(error, lockedMessage){ HandleMessage(error, lockedMessage) });
return; //get out from this method
}
}
else{
console.log('Can not get queue');
}
setTimeout(startReceiver, 3000);//if err or there are no messages then call this method later
});
}
function handleMessage(err, msg){
var result;
if (!err){
serviceBusService.deleteMessage(msg, function(deleteError){
if(deleteError) {
console.log('Can not delete the message')
}
else{
console.log('Msg has been deleted');
}
});//delete the message which has been received
try{
result = GetResult(msg.body)
}
catch (er){
result = GetResultWhenExp();
}
finally{
sendMessage(result); //send a response
startReceiver(); //repeat a receiver loop
}
}//!error
else{console.log('Error occured: '+err);
setTimeout(startReceiver, 3000); //repeat a receiver loop later
}
}
的問題是,我可以接受時的handleMessage()運行在第一時間的消息只要。進一步的startReceiver()可以獲得正確的活動消息數,但handleMessage()獲取的未定義消息總是作爲參數(即serviceBusService.receiveQueueMessage()失敗,錯誤是「沒有消息接收」)。
使用C#庫及其標準功能來接收消息的效果很好。
這裏有什麼問題?請幫助
編輯:我剛剛從Azure的SDK-的節點資源庫複製粘貼this example,在我的情況下,它產生相同的行爲:第一條消息已成功接收,但以下要求巴士返回「無消息接收「
嗨@Mergasov,任何更新,但? –
@Gary Liu - MSFT,我在這裏忘了答案,對不起。事情是我有一個過期的js節點包。當我更新它時,我的代碼是有效的。 – Mergasov