我与此代码的工作消息从队列中接收消息: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