正如文档Delete Message 中提到的,该函数需要popreceipt 参数,该参数由Get Messages 或Update Message 操作返回。
并且在更新消息操作后,该消息的popreceipt 会发生变化。因此,如果您编写 sn-p 代码如下所示:
queueSvc.getMessages('myqueue', function(error, result, response){
if(!error){
// Messages retreived
for(var index in result){
var message = result[0];
queueSvc.updateMessage('myqueue', message.messageid, message.popreceipt, 0, {messageText: 'new text'}, function(error, result, response){
if(!error){
// Message updated successfully
console.log('result: '+JSON.stringify(result));
console.log(message.popreceipt)
queueSvc.deleteMessage('myqueue', message.messageid, message.popreceipt, function(error, response){
if(!error){
console.log(response);
// Message deleted
}else{
console.log(error);
}
});
}else{
console.log(error);
}
});
}
}
});
你会遇到你的问题,你可以在cmdlet中监控,我们发现popreceipt在更新操作后发生了变化。
因此,如果您需要在更新操作后删除消息,则必须利用 result 对象,它是更新后的新消息对象。例如
queueSvc.deleteMessage('myqueue', result.messageid, result.popreceipt, function(error, response){
if(!error){
console.log(response);
// Message deleted
}else{
console.log(error);
}
});