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

发送消息

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

请求

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

请求标头

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

请求标头 描述
Authorization 指定以下标记值之一:
  • Microsoft Entra JSON Web 令牌 (JWT) 令牌。
    示例:Authorization: Bearer <Azure AD JWT token>
    有关生成Microsoft Entra 令牌的信息,请参阅 从应用程序进行身份验证。
  • 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 内部错误。

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

响应标头

传入 内容类型

响应正文

没有。

以下 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  

另请参阅