我使用AddMessage创建了一条不可见的消息。隐形6个小时。 Azure存储资源管理器显示" 0 of 1 message"。这意味着该消息已被队列服务接受,但尚未可见。
成功进行addMessage调用后保存messageId和Pop Receipt。
从其他应用程序,当我尝试使用上面的messageId和PopReceipt UpdateMessage时。它抛出一个错误 "未找到404消息"。
一旦看到相同的消息,UpdateMessage就会成功使用相同的messageId和PopReceipt。现在我改变了它的内容和可见度 - 让它在4小时内不可见。 Azure存储资源管理器现在显示" 0的1条消息" 在此UpdateMessage之后,生成了一个新的PopReceipt。
从其他应用程序中,我尝试使用新的PopReceipt更新不可见的消息。这次UpdateMessage成功了。
看起来UpdateMessage第一次失败了。一旦消息对队列可见,则无论消息的可见性如何,后续的UpdateMessage调用都会成功。
知道这里发生了什么,或者我错过了什么?
更新
还有一个观察结果:
1
queue.AddMessage(msg, System.Nullable(), invisibleTime)
queue.UpdateMessage(msg, invisibleTime,...)
//save msg.messageId and msg.PopReceipt to be used later
来自其他应用程序:
msg = new CloudQueueMessage(mid, popReceipt) //saved vals from (1)
queue.UpdateMessage(msg, newInvisibleTime, ...)
这里UpdateMessage允许我更新不可见的消息。
如果我从步骤(1)中删除了 UpdateMessage ,则在步骤(2)中, UpdateMessage 调用将失败并显示错误404 message not found
< / p>