Sdílet prostřednictvím


Hlavičky a vlastnosti zpráv

Tato část popisuje hlavičky a vlastnosti zpráv.

Záhlaví zpráv

Při odesílání zprávy můžete zadat následující vlastnosti zprávy. Pokud je odeslána nebo přijata jedna zpráva, jsou tyto vlastnosti obsaženy v hlavičce PROTOKOLU HTTP BrokerProperties ve formátu kódování JSON. Pokud se odešle dávka zpráv, jsou tyto vlastnosti součástí textu HTTP s kódováním JSON. Další informace najdete v tématu Odeslání zprávy a Odeslání dávky zpráv.

Následující tabulka uvádí vlastnosti Microsoft.ServiceBus.Messaging.BrokeredMessage . Vlastnosti se můžou zobrazit v libovolném pořadí. Pokud vlastnost není zadána, service Bus použije výchozí hodnotu pro danou vlastnost. Vlastnosti zprostředkovatele jiné než uvedené jsou ignorovány. Akceptované vlastnosti jsou nezávislé na hodnotě zadané verze rozhraní API. Specifikátor api-version se v požadavku HTTP nevyžaduje.

Pokud jsou vlastnosti SessionId a PartitionKey nastavené, musí být nastaveny na stejnou hodnotu.

Jedna hlavička HTTP s názvem BrokerProperties obsahuje všechny BrokeredMessage hlavičky. Vlastnosti jsou ve formátu JSON. To usnadňuje rozšíření BrokeredMessage vlastností. Také se zarovná s webovým programovacím modelem pomocí formátu JSON, který je vhodný pro web. To usnadňuje vytváření a využívání vlastností zprávy s menším parsováním řetězců. Následuje příklad BrokeredMessage hlaviček:

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“}  

Následující tabulka ukazuje, jak BrokeredMessage se vlastnosti mapují na hlavičky HTTP.

BrokeredMessage (SBMP) Části Typ Hlavička HTTP Usnadnění HTTP Req/Res
Contenttype řetězec Typ obsahu get, set Req, Res
CorrelationId řetězec BrokerProperties{CorrelationId} get, set Req, Res
SessionID řetězec BrokerProperties {SessionId} get, set Req, Res
DeliveryCount int BrokerProperties {DeliveryCount } get Res
LockedUntilUtc DateTime BrokerProperties{LockedUntil} get Res
LockToken Identifikátor GUID BrokerProperties{LockToken} get Res
Messageid řetězec BrokerProperties{MessageId} get, set Res
Popisek řetězec BrokerProperties {Label} get, set Req, Res
Odpovědět řetězec BrokerProperties {ReplyTo} get, set Req, Res
EnqueuedTimeUtc Datum a čas Datum get Res
SequenceNumber long BrokerProperties {SequenceNumber} get Res
TimeToLive TimeSpan Kolekce BrokerProperties {TimeToLive} get, set Req, Res
Záměr řetězec BrokerVlastnosti {To} get, set Req, Res
ScheduledEnqueueTimeUtc DateTime BrokerProperties {ScheduledEnqueueTimeUtc} get, set Req, Res
ReplyToSessionId řetězec BrokerProperties {ReplyToSessionId} get, set Req, Res
PartitionKey řetězec Vlastnosti zprostředkovatele {PartitionKey} get, set Req, Res

Kromě těchto vlastností můžete zadat vlastní vlastnosti. Pokud je odeslána nebo přijata jedna zpráva, každá vlastní vlastnost se umístí do vlastní hlavičky HTTP. Pokud se odešle dávka zpráv, vlastní vlastnosti jsou součástí těla HTTP kódovaného ve formátu JSON. Další informace najdete v tématu Odeslání zprávy a Dávka odeslání zprávy.

Poznámky

  • DateTime hlavičky jsou formátovány podle definice RFC2616: https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3. Například "Sun, 06 Nov 1994 08:49:37 GMT".

  • BrokerProperties {TimeToLive} je počet sekund timespanu (dvojnásobek).

  • ExpiresAtUtc nemá odpovídající hlavičku HTTP, protože ji lze odvodit z Date a BrokerProperties {TimeToLive}.

  • Hlavičky zpráv s objektem get accessor se můžou zobrazit jenom v odpovědi HTTP (například v přijaté zprávě). Pokud jsou tyto hlavičky v požadavku HTTP (tj. odeslané zprávě), jsou tiše ignorovány. Nerozpoznané hlavičky HTTP se také tiše ignorují.

  • Pokud je hodnota poškozena, vrátí se klientovi odpovídající stavový kód HTTP.

Vlastnosti zprávy

Vlastnosti zprávy jsou uživatelem definované páry klíč-hodnota obsažené v message.Properties. Pro silného klienta SBMP jsou hodnoty omezené na byte, sbyte, , char, short, ushort, uintint, long, ulong, floatGuidbooldecimaldouble, , string, Uri, DateTimeDateTimeOffseta TimeSpan.

Pro REST/HTTP Uri a DateTimeOffset se nepodporují (pokud jsou v BrokeredMessage, nejsou zahrnuté v hlavičkách HTTP). Typy GUID se převedou na řetězce a TimeSpan typy se převedou na "total seconds" (celkový počet sekund). V důsledku těchto převodů dojde ke ztrátě věrnosti typu. Je také vyloučený jakýkoli název vlastnosti, který odpovídá omezené hlavičce HTTP (například Connection, Expectatd.).

Každý pár klíč-hodnota v nástroji message.Properties se namapuje na hlavičku HTTP v následujícím formátu. prop je název klíče a value je řetězcovou reprezentací hodnoty:

prop_name: value  

Odvozuje se typ hodnoty. Pokud je uzavřena dvojitými uvozovkami, pak:

  • Pokud má obsah formu data a času RFC2616, pak zprostředkovatel ho považuje za System.DateTime.

  • V opačném případě zprostředkovatel uvozovky odebere a zachází s obsahem jako s System.String.

Pokud není uzavřen do dvojitých uvozovek, pak:

  1. Pokud je obsah pravdivý nebo nepravda (rozlišují se malá a velká písmena),pak zprostředkovatel s ním zachází jako System.Boolean s odpovídající hodnotou.

  2. Pokud lze obsah analyzovat jako celé číslo, pak zprostředkovatel s ním zachází jako s System.Int64.

  3. Pokud je možné obsah analyzovat jako číslo s plovoucí desetinou čárkou, pak zprostředkovatel s ním zachází jako System.Doubles .

  4. V opačném případě zprostředkovatel zprávu odmítne.

Příklad:

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

Text zprávy

Mezi streamem textu požadavku/odpovědi HTTP a datovým proudem BrokerMessage.BodyStreamse neprovádí žádné převody. Hlavička Content-Type požadavku HTTP je také zachována a vrácena příjemci zprávy, aby aplikace mohla správně interpretovat bajty v těle.

Pokud je zpráva vytvořena pomocí sbmp silného klienta bez vlastního serializátoru xml objektu, typ obsahu bude ve výchozím nastavení "application/msbin1", což je DataContractBinarySerializer, pokud aplikace explicitně nezmění (například message.ContectType=”application/mytype”) po vytvoření zprávy. Tato hodnota typu obsahu se vrátí příjemci HTTP. Je zodpovědností aplikace rozhodnout, jak deserializovat bajty v těle.

Vazba služby WCF Service Bus nastaví ContentType na kodér ContentTypezpráv . Pokud se například používá kodér textových zpráv, očekává se, Content-Type že hodnota bude “application/soap+xml”.

Převod zpráv

Převod mezi požadavkem/odpovědí HTTP a zprávou se provádí u poskytovatele modulu runtime zasílání zpráv HTTP. Metody převodu jsou rozšířeny tak, aby zahrnovaly mapování hlaviček a vlastností v tabulce dříve v této části a aby se zachoval typ obsahu zprávy.