Delen via


Berichtkoppen en eigenschappen

In deze sectie worden berichtkoppen en eigenschappen beschreven.

Berichtkoppen

Wanneer u een bericht verzendt, kunt u de volgende berichteigenschappen opgeven. Als er één bericht wordt verzonden of ontvangen, zijn deze eigenschappen opgenomen in de HTTP-header BrokerProperties in een met JSON gecodeerde indeling. Als er een batch berichten wordt verzonden, maken deze eigenschappen deel uit van de MET JSON gecodeerde HTTP-hoofdtekst. Zie Bericht verzenden en Berichtbatch verzenden voor meer informatie.

De volgende tabel bevat de eigenschappen Microsoft.ServiceBus.Messaging.BrokeredMessage . De eigenschappen kunnen in elke gewenste volgorde worden weergegeven. Als er geen eigenschap is opgegeven, gebruikt Service Bus de standaardwaarde voor die eigenschap. Andere brokereigenschappen dan de vermelde eigenschappen worden genegeerd. De geaccepteerde eigenschappen zijn onafhankelijk van de waarde van de opgegeven api-versie. De api-versieaanduiding is niet vereist in de HTTP-aanvraag.

Als de eigenschappen SessionId en PartitionKey beide zijn ingesteld, moeten ze op dezelfde waarde worden ingesteld.

Eén HTTP-header met de BrokeredMessage naam BrokerProperties bevat alle headers. De eigenschappen hebben een JSON-indeling. Dit maakt het eenvoudig om de BrokeredMessage eigenschappen uit te breiden. Het wordt ook afgestemd op het webprogrammeermodel door gebruik te maken van de webvriendelijke JSON-indeling. Hierdoor kunt u eenvoudig berichteigenschappen maken en gebruiken met minder tekenreeksparsering. Hier volgt een voorbeeld van BrokeredMessage headers:

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

In de volgende tabel ziet u hoe BrokeredMessage eigenschappen worden toegewezen aan HTTP-headers.

BrokeredMessage (SBMP) Delen Type HTTP-header Toegankelijkheid HTTP-req/res
Contenttype tekenreeks Content-Type ophalen, instellen Req, Res
CorrelationId tekenreeks BrokerProperties{CorrelationId} ophalen, instellen Req, Res
SessionID tekenreeks BrokerProperties {SessionId} ophalen, instellen Req, Res
DeliveryCount int BrokerProperties {DeliveryCount } ophalen Res
LockedUntilUtc DateTime BrokerProperties{LockedUntil} ophalen Res
LockToken Guid BrokerProperties{LockToken} ophalen Res
Messageid tekenreeks BrokerProperties{MessageId} ophalen, instellen Res
Label tekenreeks BrokerEigenschappen {Label} ophalen, instellen Req, Res
ReplyTo tekenreeks BrokerProperties {ReplyTo} ophalen, instellen Req, Res
EnqueuedTimeUtc Datum/Tijd Datum ophalen Res
SequenceNumber long BrokerProperties {SequenceNumber} ophalen Res
TimeToLive TimeSpan BrokerProperties-verzameling {TimeToLive} ophalen, instellen Req, Res
Tot tekenreeks BrokerEigenschappen {To} ophalen, instellen Req, Res
ScheduledEnqueueTimeUtc DateTime BrokerProperties {ScheduledEnqueueTimeUtc} ophalen, instellen Req, Res
ReplyToSessionId tekenreeks BrokerProperties {ReplyToSessionId} ophalen, instellen Req, Res
PartitionKey tekenreeks BrokerEigenschappen {PartitionKey} ophalen, instellen Req, Res

Naast deze eigenschappen kunt u aangepaste eigenschappen opgeven. Als er één bericht wordt verzonden of ontvangen, wordt elke aangepaste eigenschap in een eigen HTTP-header geplaatst. Als er een batch berichten wordt verzonden, maken aangepaste eigenschappen deel uit van de met JSON gecodeerde HTTP-hoofdtekst. Zie Bericht verzenden en Berichtbatch verzenden voor meer informatie.

Opmerkingen

  • DateTime headers zijn opgemaakt zoals gedefinieerd door RFC2616: https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3. Bijvoorbeeld'Sun, 06 Nov 1994 08:49:37 GMT'.

  • BrokerProperties {TimeToLive} is het aantal seconden van de Periode (dubbel).

  • ExpiresAtUtc heeft geen bijbehorende HTTP-header omdat deze kan worden afgeleid van Date en BrokerProperties {TimeToLive}.

  • Berichtkoppen met een get accessor kunnen alleen worden weergegeven in het HTTP-antwoord (bijvoorbeeld ontvangen bericht). Wanneer deze headers aanwezig zijn in de HTTP-aanvraag (dat wil gezegd, verzonden bericht), worden ze op de achtergrond genegeerd. Niet-herkende HTTP-headers worden ook op de achtergrond genegeerd.

  • Als de waarde onjuist is ingedeeld, wordt een geschikte HTTP-statuscode geretourneerd naar de client.

Berichteigenschappen

Berichteigenschappen zijn door de gebruiker gedefinieerde sleutel-waardeparen in message.Properties. Voor de SBMP-dikke client zijn de waarden beperkt tot byte, sbyte, , shortchar, , ushort, int, uint, long, ulong, doublefloat, decimal, , bool, Guid, , string, Uri, DateTime, , DateTimeOffseten TimeSpan.

Voor REST/HTTP Uri en DateTimeOffset worden niet ondersteund (als ze zich in de BrokeredMessagebevinden, worden ze niet opgenomen in de HTTP-headers). GUID-typen worden geconverteerd naar tekenreeksen en TimeSpan typen worden geconverteerd naar 'totaal aantal seconden'. Als gevolg van deze conversies gaat het type betrouwbaarheid verloren. Elke eigenschapsnaam die overeenkomt met de beperkte HTTP-header (bijvoorbeeld Connection, Expect, enzovoort), wordt ook uitgesloten.

Elk sleutel-waardepaar in message.Properties wordt toegewezen aan een HTTP-header in de volgende indeling. prop is de sleutelnaam en value is de tekenreeksweergave van de waarde:

prop_name: value  

Het type waarde wordt afgeleid. Als de aanhalingstekens tussen dubbele aanhalingstekens zijn geplaatst, gaat u als volgt te werk:

  • Als de inhoud de vorm heeft van een RFC2616-datumtijd, behandelt de broker deze als een System.DateTime.

  • Anders verwijdert de broker de aanhalingstekens en behandelt de inhoud als een System.String.

Als de aanhalingstekens niet tussen dubbele aanhalingstekens worden geplaatst, gaat u als volgt te werk:

  1. Als de inhoud waar of onwaar is (hoofdlettergevoelig!), behandelt de broker deze als een System.Boolean met de bijbehorende waarde.

  2. Als de inhoud kan worden geparseerd als een geheel getal, behandelt de broker deze als een System.Int64.

  3. Als de inhoud kan worden geparseerd als een drijvendekommagetal, behandelt de broker deze als een System.Double.

  4. Anders weigert de broker het bericht.

Bijvoorbeeld:

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

Berichttekst

Er worden geen conversies uitgevoerd tussen de http-aanvraag/antwoordbodystream en de BrokerMessage.BodyStream. De header van de HTTP-aanvraag blijft ook behouden en wordt geretourneerd naar de ontvanger van het bericht, Content-Type zodat de toepassing de bytes in de hoofdtekst correct kan interpreteren.

Als het bericht is gemaakt met de dikke SBMP-client zonder een aangepaste XML-objectserialisatiefunctie, wordt het inhoudstype standaard ingesteld op 'application/msbin1'. Dit is de DataContractBinarySerializer, tenzij de toepassing deze expliciet wijzigt (bijvoorbeeld message.ContectType=”application/mytype”) nadat het bericht is gemaakt. Dit inhoudstype wordt geretourneerd naar de HTTP-consument. Het is de verantwoordelijkheid van de toepassing om te bepalen hoe de bytes in de hoofdtekst moeten worden gedeserialiseerd.

De WCF Service Bus-binding stelt de ContentType in op de van de encoder van ContentTypehet bericht. Als er bijvoorbeeld een tekstberichtcoderingsprogramma wordt gebruikt, wordt verwacht dat de Content-Type is “application/soap+xml”.

Berichtconversie

Conversie tussen een HTTP-aanvraag/-antwoord en een bericht wordt uitgevoerd bij de HTTP Messaging Runtime-provider. De conversiemethoden worden uitgebreid met de toewijzing van kopteksten/eigenschappen in de tabel eerder in deze sectie en om het inhoudstype van het bericht te behouden.