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ånDate
ochBrokerProperties {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
, uint
int
, long
, , ulong
, float
, decimal
double
bool
, Guid
, string
, Uri
, , DateTime
, DateTimeOffset
och .TimeSpan
För REST/HTTP Uri
och DateTimeOffset
stöds inte (om de finns i BrokeredMessage
ingå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
, Expect
och 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:
Om innehållet är sant eller falskt (skiftlägeskänsligt!) behandlar mäklaren det som ett
System.Boolean
med motsvarande värde.Om innehållet kan parsas som ett heltal behandlar mäklaren det som ett System.Int64.
Om innehållet kan parsas som ett flyttalsnummer behandlar mäklaren det som ett
System.Double
.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.