Dela via


Meddelanderubriker och egenskaper

I det här avsnittet beskrivs meddelandehuvuden och egenskaper.

Meddelanderubriker

När du skickar ett meddelande kan du ange följande meddelandeegenskaper. Om ett enskilt meddelande skickas eller tas emot finns dessa egenskaper i HTTP-huvudet BrokerProperties i ett JSON-kodat format. Om en batch med meddelanden skickas är dessa egenskaper en del av den JSON-kodade HTTP-brödtexten. Mer information finns i Skicka meddelande och Skicka meddelande batch.

I följande tabell visas egenskaperna Microsoft.ServiceBus.Messaging.BrokeredMessage . Egenskaperna kan visas i valfri ordning. Om en egenskap inte anges använder Service Bus standardvärdet för den egenskapen. Andra egenskaper för asynkrona meddelandeköer än de som visas ignoreras. De godkända egenskaperna är oberoende av värdet för den angivna API-versionen. Api-versionsspecificeraren krävs inte i HTTP-begäran .

Om båda egenskaperna SessionId och PartitionKey har angetts måste de anges till samma värde.

Ett HTTP-huvud med namnet BrokerProperties innehåller alla BrokeredMessage rubriker. Egenskaperna är JSON-formaterade. Det gör det enkelt att utöka BrokeredMessage egenskaperna. Dessutom justeras den till webbprogrammeringsmodellen genom att använda det webvänliga JSON-formatet. Det gör det enkelt att skapa och använda meddelandeegenskaper med mindre strängparsning. Följande är ett exempel på BrokeredMessage rubriker:

BrokerProperties:  { “SessionId”: “{27729E1-B37B-4D29-AA0A-E367906C206E}”, “MessageId”: “{701332E1-B37B-4D29-AA0A-E367906C206E}”, “TimeToLive” : 90, “CorrelationId”: “{701332F3-B37B-4D29-AA0A-E367906C206E}”, “SequenceNumber“ : 12345, “DeliveryCount“ : 2, “To“ : "http://contoso.com“, “ReplyTo“ : "http://fabrikam.com“,  "EnqueuedTimeUtc“ : " Sun, 06 Nov 1994 08:49:37 GMT“, "ScheduledEnqueueTimeUtc“ : " Sun, 06 Nov 1994 08:49:37 GMT“}  

I följande tabell visas hur BrokeredMessage egenskaper mappas till HTTP-huvuden.

BrokeredMessage (SBMP) Delar Typ HTTP-huvud Tillgänglighet HTTP Req/Res
Contenttype sträng Content-Type get, set Req, Res
CorrelationId sträng BrokerProperties{CorrelationId} get, set Req, Res
SessionID sträng BrokerProperties {SessionId} get, set Req, Res
DeliveryCount int BrokerProperties {DeliveryCount } get Res
LockedUntilUtc DateTime BrokerProperties{LockedUntil} get Res
LockToken GUID BrokerProperties{LockToken} get Res
Messageid sträng BrokerProperties{MessageId} get, set Res
Etikett sträng BrokerProperties {Label} get, set Req, Res
ReplyTo sträng BrokerProperties {ReplyTo} get, set Req, Res
EnqueuedTimeUtc DateTime Datum get Res
SequenceNumber long BrokerProperties {SequenceNumber} get Res
TimeToLive TimeSpan BrokerProperties-samling {TimeToLive} get, set Req, Res
Om du vill sträng BrokerProperties {To} get, set Req, Res
ScheduledEnqueueTimeUtc DateTime BrokerProperties {ScheduledEnqueueTimeUtc} get, set Req, Res
ReplyToSessionId sträng BrokerProperties {ReplyToSessionId} get, set Req, Res
PartitionKey sträng BrokerProperties {PartitionKey} get, set Req, Res

Förutom dessa egenskaper kan du ange anpassade egenskaper. Om ett enda meddelande skickas eller tas emot placeras varje anpassad egenskap i ett eget HTTP-huvud. Om en batch med meddelanden skickas är anpassade egenskaper en del av den JSON-kodade HTTP-brödtexten. Mer information finns i Skicka meddelande och Skicka meddelande batch.

Kommentarer

  • DateTime rubriker formateras enligt definitionen av RFC2616: https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3. Till exempel "Sön, 06 nov 1994 08:49:37 GMT".

  • BrokerProperties {TimeToLive} är antalet sekunder av TimeSpan (dubbelt).

  • ExpiresAtUtc har inte någon motsvarande HTTP-rubrik eftersom den kan härledas från Date och BrokerProperties {TimeToLive}.

  • Meddelandehuvuden med en get-accessor kan bara visas i HTTP-svaret (till exempel mottaget meddelande). När de här rubrikerna finns i HTTP-begäran (dvs. skickat meddelande) ignoreras de tyst. Okända HTTP-huvuden ignoreras också tyst.

  • Om värdet är felaktigt returneras en lämplig HTTP-statuskod till klienten.

Meddelandeegenskaper

Meddelandeegenskaper är användardefinierade nyckel/värde-par som finns i message.Properties. För den tjocka SBMP-klienten är värdena begränsade till byte, sbyte, char, short, ushort, uintint, long, , ulong, float, decimaldoublebool, Guid, string, Uri, , DateTime, DateTimeOffsetoch .TimeSpan

För REST/HTTP Uri och DateTimeOffset stöds inte (om de finns i BrokeredMessageingår de inte i HTTP-huvudena). GUID-typer konverteras till strängar och TimeSpan typer konverteras till "totalt antal sekunder". På grund av dessa konverteringar går typåtergivningen förlorad. Alla egenskapsnamn som motsvarar det begränsade HTTP-huvudet (till exempel Connection, Expectoch så vidare) undantas också.

Varje nyckel/värde-par i message.Properties mappas till ett HTTP-huvud i följande format. prop är nyckelnamnet och value är strängrepresentationen av värdet:

prop_name: value  

Typen av värde härleds. Om den är omgiven av dubbla citattecken:

  • Om innehållet har formen av en RFC2616-datumtid behandlar mäklaren det som en System.DateTime.

  • Annars tar asynkron meddelandekö bort citattecknarna och behandlar innehållet som en System.String.

Om den inte är omgiven av dubbla citattecken:

  1. Om innehållet är sant eller falskt (skiftlägeskänsligt!) behandlar mäklaren det som ett System.Boolean med motsvarande värde.

  2. Om innehållet kan parsas som ett heltal behandlar mäklaren det som ett System.Int64.

  3. Om innehållet kan parsas som ett flyttalsnummer behandlar mäklaren det som ett System.Double.

  4. Annars avvisar asynkron meddelandekö.

Exempel:

product: Windows 7 Ultimate  
price: 299.98  
order-time: Fri, 04 Mar 2011 08:49:37 GMT  

Meddelandetext

Inga konverteringar utförs mellan HTTP-begäran/svarstextströmmen och BrokerMessage.BodyStream. Content-Type Dessutom bevaras huvudet från HTTP-begäran och returneras till meddelandemottagaren så att programmet kan tolka bytena i brödtexten korrekt.

Om meddelandet skapas med den tjocka SBMP-klienten utan en anpassad XML-objektserialiserare kommer innehållstypen som standard att vara "application/msbin1", vilket är DataContractBinarySerializer, såvida inte programmet uttryckligen ändrar det (till exempel message.ContectType=”application/mytype”) när meddelandet har skapats. Det här innehållstypsvärdet returneras till HTTP-konsumenten. Det är programmets ansvar att bestämma hur bytena i brödtexten ska deserialiseras.

WCF Service Bus-bindningen anger ContentType till meddelandekodarens ContentType. Om till exempel en textmeddelandekodare används förväntas den Content-Type vara “application/soap+xml”.

Meddelandekonvertering

Konvertering mellan en HTTP-begäran/ett svar och ett meddelande utförs hos HTTP-meddelandekörningsprovidern. Konverteringsmetoderna utökas för att inkludera mappningen av sidhuvud/egenskaper i tabellen tidigare i det här avsnittet och för att bevara meddelandets innehållstyp.