你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

发送消息

将消息发送到服务总线队列或主题。

请求

方法 请求 URI HTTP 版本
POST http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath|topicPath}/messages|HTTP/1.1

请求标头

下表介绍必需的和可选的请求标头。 除了所列出的属性外,标头还可以包含自定义属性。 请参阅示例。

请求标头 说明
Authorization 指定以下标记值之一:
  • Azure Active Directory (Azure AD) JSON Web 令牌 (JWT) 令牌。
    示例:Authorization: Bearer <Azure AD JWT token>
    有关生成 Azure AD 令牌的信息,请参阅 从应用程序进行身份验证
  • SAS 标记。
    示例:Authorization: SharedAccessSignature sr=<NAMESPACE NAME>.servicebus.windows.net&sig=<SHARED ACCESS KEY>&se=<TOKEN EXPIRY INSTANT>&skn=<SHARED KEY NAME>
    有关生成 SAS 令牌的信息,请参阅 生成共享访问签名令牌生成 SAS 令牌
Content-Type 为发布的实体正文设置适当的内容类型, (消息有效负载) 。
BrokerProperties JSON 编码的 BrokeredMessage 属性集。
x-ms-retrypolicy (可选) 设置为 NoRetry 可在发生暂时性错误时禁用自动重试发送操作。

请求正文

请求正文是消息负载。

如果要通过 HTTP/HTTPS 以外的协议接收消息,则必须序列化消息正文;例如,使用 XML System.Runtime.Serialization.DataContractSerializer。 例如:

MemoryStream ms = new MemoryStream();  
DataContractSerializer serializer = new DataContractSerializer(typeof(string));  
serializer.WriteObject(ms, "This is a message.");  
byte[] body = ms7.ToArray();  

上面的代码将生成以下消息正文:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">This is a message.</string>  

你可以使用以下代码接收和处理该消息:

BrokeredMessage message = queueClient.Receive();  
string body = message.GetBody<string>(new DataContractSerializer(typeof(string)));  

响应

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

响应代码

代码 说明
201 已成功将消息发送到队列或主题。
400 请求错误。
401 授权失败。
403 超出了配额,或者消息太大。
410 指定的队列或主题不存在。
500 内部错误。

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

响应标头

传入的 Content-type

响应正文

无。

示例

以下 HTTP 请求将向队列或主题发送一条消息。 该消息包含以下属性:

Label: "M1"  
TimeToLive: 10 seconds  
State: Active  
Message body: "This is a message."  

除了 , BrokeredProperties消息还具有以下自定义属性: Priority=HighCustomer="12345,ABC"

POST https://your-namespace.servicebus.windows.net/HttpClientSampleQueue/messages?timeout=60 HTTP/1.1  
Authorization: SharedAccessSignature sr=your-namespace&sig=Fg8yUyR4MOmXfHfj55f5hY4jGb8x2Yc%2b3%2fULKZYxKZk%3d&se=1404256819&skn=RootManageSharedAccessKey  
BrokerProperties: {"Label":"M1","State":"Active","TimeToLive":10}  
Priority: High  
Customer: 12345,ABC  
Content-Type: application/atom+xml;type=entry;charset=utf-8  
Host: your-namespace.servicebus.windows.net  
Content-Length: 18  
Expect: 100-continue  
  
This is a message.  

服务总线返回以下响应:

HTTP/1.1 201 Created  
Transfer-Encoding: chunked  
Content-Type: application/xml; charset=utf-8  
Server: Microsoft-HTTPAPI/2.0  
Date: Tue, 01 Jul 2014 23:00:22 GMT  
  
0  

另请参阅

Service Bus HTTP 客户端示例