导出 (0) 打印
全部展开

更新消息

更新时间: 2011年9月

此操作是在队列服务 API 2011-08-18 版中引入的。Update Message操作更新消息的可见性超时。也可以使用此操作更新消息的内容。消息必须采用某种格式,以便可以包含在具有 UTF-8 编码的 XML 请求中,并且编码的消息最大大小为 64KB。

可以按如下方式构建Update Message请求。建议使用 HTTPS。将 myaccount 替换为你的存储帐户名称,并将 myqueue 替换为你的队列名称:

 

方法 请求 URI HTTP 版本

PUT

https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds>

HTTP/1.1

SDK 1.6 和更高版本支持此操作。

在针对模拟的存储服务发出请求时,请将模拟器主机名和队列服务端口指定为 127.0.0.1:10001,后跟模拟的存储帐户名称:

 

方法 请求 URI HTTP 版本

PUT

http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds>

HTTP/1.1

有关详细信息,请参阅About Development Storage

可以在请求 URI 上指定以下参数。

 

Parameter 说明

popreceipt

必需。指定从以前的获取消息更新消息操作调用中返回的有效 pop 回执值。

visibilitytimeout

必需。指定新的可见性超时值(秒),它相对于服务器时间。新值必须大于或等于 0,但不能大于 7 天。消息的可见性超时不能设置为晚于到期时间的值。可以更新消息,直到将其删除或已过期。

timeout

可选。timeout 参数以秒表示。有关详细信息,请参阅为队列服务操作设置超时

下表介绍必需的和可选的请求标头。

 

请求标头 说明

Authorization

必需。指定身份验证方案、帐户名和签名。有关详细信息,请参阅Azure 存储服务身份验证

Date or x-ms-date

必需。为请求指定协调世界时 (UTC)。有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

需要 2011-08-18 或更高版本。指定用于此请求的操作的版本。有关详细信息,请参阅Azure 存储服务版本化

x-ms-client-request-id

可选。提供客户端生成的、附带 1 KB 字符限制的模糊值,在启用存储分析日志记录时,将在分析日志中记录该值。强烈建议使用此标头将客户端活动与服务器接收的请求相关联。有关详细信息,请参阅关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

请求正文包含以下 XML 格式的消息数据。请注意,消息内容必须采用可使用 UTF-8 编码的格式。

<QueueMessage>
    <MessageText>message-content</MessageText>
</QueueMessage>

响应包括 HTTP 状态代码和一组响应标头。

成功的操作将返回状态代码 204(无内容)。

有关状态代码的信息,请参阅状态和错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

请求标头 说明

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。有关详细信息,请参阅API 操作故障排除

x-ms-version

指示用于执行请求的队列服务的版本。针对 2009-09-19 和更高版本发出的请求将返回此标头。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

x-ms-popreceipt

队列消息的 pop 回执。

x-ms-time-next-visible

表示消息何时在队列上可见的 UTC 日期/时间值。

无。

帐户所有者以及使用有权执行此操作的共享访问签名的任何人可以执行此操作。

以下请求将队列消息的可见性延长 30 秒并更新其内容。

PUT https://myaccount.queue.core.windows.net/myqueue/messages/663d89aa-d1d9-42a2-9a6a-fcf822a97d2c?popreceipt=AgAAAAEAAAApAAAAGIw6Q29bzAE%3d&visibilitytimeout=30&timeout=30 HTTP/1.1

请求与以下标头一起发送:

x-ms-version: 2011-08-18
x-ms-date: Mon, 29 Aug 2011 17:17:21 GMT
Authorization: SharedKey myaccount:batcrWZ35InGCZeTUFWMdIQiOZPCW7UEyeGdDOg7WW4=
Content-Length: 75

请求与以下 XML 正文一起发送:

<QueueMessage>
    <MessageText>new-message-content</MessageText>
</QueueMessage>

在发送请求后,将返回以下响应:

HTTP/1.1 204 No Content
Content-Length: 0
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: df34a7dd-3cbe-4206-a586-d6de3cf225a7
x-ms-version: 2011-08-18
x-ms-popreceipt: AwAAAAIAAAApAAAAINtMQ29bzAEBAAAA
x-ms-time-next-visible: Mon, 29 Aug 2011 17:17:51 GMT
Date: Mon, 29 Aug 2011 17:17:21 GMT

如果指定的消息在队列中不存在,或者指定的 pop 回执与该消息不匹配,Update Message操作将失败。

pop 回执是由Get MessagesUpdate Message操作返回的。在发生以下事件之一之前,pop 回执将始终有效:

  1. 消息已过期。

  2. 已使用上次从 Get MessagesUpdate Message 中收到的 pop 回执删除消息。

  3. 不可见性时间已过,并且Get Messages请求已将消息取消排队。在不可见性时间过后,消息将再次变为可见。如果消息是由另一个Get Messages请求检索的,则可以使用返回的 pop 回执删除或更新该消息。

  4. 已使用新的可见性超时更新消息。在更新消息后,将返回新的 pop 回执。

可以使用Update Message操作持续延长队列消息的不可见性。如果你希望辅助角色“租用”队列消息,则此功能可能是非常有用的。例如,如果辅助角色调用获取消息并意识到需要更多的时间处理消息,则可以持续延长消息的不可见性时间,直到处理该消息时为止。如果在处理期间辅助角色失败,消息最终将再次变为可见,并且另一个辅助角色可以处理该消息。

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft