Enviar mensaje

Envía un mensaje a una cola o tema de Service Bus.

Solicitud

Método URI de solicitud Versión HTTP
POST http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath|topicPath}/messages|HTTP/1.1

Encabezados de solicitud

En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales. Además de las propiedades mencionadas, el encabezado puede contener propiedades personalizadas. Vea el ejemplo siguiente.

Encabezado de solicitud Descripción
Authorization Especifique uno de los siguientes valores de token:
  • Token web JSON (JWT) de Azure Active Directory (Azure AD).
    Ejemplo: Authorization: Bearer <Azure AD JWT token>.
    Para obtener información sobre cómo generar un token de Azure AD, consulte Autenticación desde una aplicación.
  • Un token de SAS.
    Ejemplo: Authorization: SharedAccessSignature sr=<NAMESPACE NAME>.servicebus.windows.net&sig=<SHARED ACCESS KEY>&se=<TOKEN EXPIRY INSTANT>&skn=<SHARED KEY NAME>.
    Para obtener información sobre cómo generar un token de SAS, consulte Generar un token de firma de acceso compartido y Generar token de SAS.
Content-Type Establezca el tipo de contenido adecuado para el cuerpo de la entidad publicada (carga del mensaje).
BrokerProperties Conjunto de propiedades BrokeredMessage codificadas en JSON.
x-ms-retrypolicy (Opcional) Establézcalo en NoRetry para deshabilitar el reintento automático en las operaciones de envío cuando se produzcan errores transitorios.

Cuerpo de la solicitud

El cuerpo de la solicitud es la carga del mensaje.

Si el mensaje se va a recibir a través de un protocolo distinto de HTTP/HTTPS, se debe serializar el cuerpo del mensaje; por ejemplo, con un xml System.Runtime.Serialization.DataContractSerializer. Por ejemplo:

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

El código anterior genera el cuerpo de mensaje siguiente:

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

El mensaje se puede recibir y procesar con el código siguiente:

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

Response

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

Códigos de respuesta

Código Descripción
201 Mensaje enviado correctamente a la cola o el tema.
400 Solicitud incorrecta.
401 Error de autorización.
403 Se ha superado la cuota o el mensaje es demasiado grande.
410 La cola o el tema especificado no existen.
500 Error interno.

Para obtener información sobre los códigos de estado, vea Códigos de estado y error.

Encabezados de respuesta

Content-type tal como se ha pasado.

Cuerpo de la respuesta

Ninguno.

Ejemplo

La solicitud HTTP siguiente envía un mensaje a una cola o un tema. El mensaje tiene las siguientes propiedades:

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

Además de BrokeredProperties, el mensaje contiene las siguientes propiedades personalizadas: Priority=High y Customer="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.  

Service Bus devuelve la siguiente respuesta:

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  

Consulte también

Ejemplo de cliente HTTP de Service Bus