Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tej sekcji opisano nagłówki i właściwości komunikatów.
Nagłówki komunikatów
Podczas wysyłania komunikatu można określić następujące właściwości komunikatu. Jeśli jeden komunikat jest wysyłany lub odbierany, te właściwości są zawarte w nagłówku HTTP BrokerProperties w formacie zakodowanym w formacie JSON. Jeśli zostanie wysłana partia komunikatów, te właściwości są częścią treści HTTP zakodowanej w formacie JSON. Aby uzyskać więcej informacji, zobacz Wysyłanie komunikatów i wysyłanie wiadomości wsadowych.
W poniższej tabeli wymieniono właściwości Microsoft.ServiceBus.Messaging.BrokeredMessage . Właściwości mogą być wyświetlane w dowolnej kolejności. Jeśli właściwość nie jest określona, usługa Service Bus używa wartości domyślnej dla tej właściwości. Właściwości brokera inne niż wymienione są ignorowane. Zaakceptowane właściwości są niezależne od wartości określonej wersji interfejsu API. Specyfikator wersji interfejsu API nie jest wymagany w żądaniu HTTP.
Jeśli właściwości SessionId i PartitionKey są ustawione, muszą być ustawione na tę samą wartość.
Jeden nagłówek HTTP o nazwie BrokerProperties zawiera wszystkie BrokeredMessage nagłówki. Właściwości są sformatowane w formacie JSON. Ułatwia to rozszerzanie BrokeredMessage właściwości. Ponadto jest on zgodny z modelem programowania internetowego, wykorzystując przyjazny dla Internetu format JSON. Dzięki temu można łatwo tworzyć i wykorzystywać właściwości komunikatów z mniejszym analizowaniem ciągów. Oto przykład nagłówków BrokeredMessage :
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“}
W poniższej tabeli przedstawiono sposób BrokeredMessage mapowania właściwości na nagłówki HTTP.
BrokeredMessage (SBMP) Części |
Typ | Nagłówek HTTP | Ułatwienia dostępu | HTTP Req/Res |
|---|---|---|---|---|
| Contenttype | ciąg | Content-Type | get, set | Req, Res |
| CorrelationId | ciąg | BrokerProperties{CorrelationId} | get, set | Req, Res |
| SessionID | ciąg | BrokerProperties {SessionId} | get, set | Req, Res |
| Liczba dostaw | int | BrokerProperties {DeliveryCount } | get | Res |
| LockedUntilUtc | DateTime | BrokerProperties{LockedUntil} | get | Res |
| Blokada tokenu | Guid (identyfikator GUID) | BrokerProperties{LockToken} | get | Res |
| Messageid | ciąg | BrokerProperties{MessageId} | get, set | Res |
| Etykieta | ciąg | BrokerProperties {Label} | get, set | Req, Res |
| Replyto | ciąg | BrokerProperties {ReplyTo} | get, set | Req, Res |
| EnqueuedTimeUtc | Data i godzina | Data | get | Res |
| SequenceNumber | długi | BrokerProperties {SequenceNumber} | get | Res |
| TimeToLive | przedział_czasu | Kolekcja BrokerProperties {TimeToLive} | get, set | Req, Res |
| Działanie | ciąg | BrokerProperties {To} | get, set | Req, Res |
| ScheduledEnqueueTimeUtc | DateTime | BrokerProperties {ScheduledEnqueueTimeUtc} | get, set | Req, Res |
| ReplyToSessionId | ciąg | BrokerProperties {ReplyToSessionId} | get, set | Req, Res |
| PartitionKey | ciąg | BrokerProperties {PartitionKey} | get, set | Req, Res |
Oprócz tych właściwości można określić właściwości niestandardowe. Jeśli pojedynczy komunikat zostanie wysłany lub odebrany, każda właściwość niestandardowa zostanie umieszczona we własnym nagłówku HTTP. Jeśli zostanie wysłana partia komunikatów, właściwości niestandardowe są częścią treści HTTP zakodowanej w formacie JSON. Aby uzyskać więcej informacji, zobacz Wysyłanie komunikatów i wysyłanie wiadomości wsadowych.
Uwagi
DateTimenagłówki są formatowane zgodnie z definicją WFC2616: https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3. Na przykład "Sun, 06 nov 1994 08:49:37 GMT".BrokerProperties {TimeToLive} to liczba sekund przedziału czasu (dwukrotnie).
ExpiresAtUtcnie ma odpowiedniego nagłówka HTTP, ponieważ może pochodzić zDateelementów iBrokerProperties {TimeToLive}.Nagłówki komunikatów z metodą pobierania mogą pojawiać się tylko w odpowiedzi HTTP (na przykład odebrany komunikat). Gdy te nagłówki są obecne w żądaniu HTTP (tj. wysyłanym komunikacie), są one dyskretnie ignorowane. Nierozpoznane nagłówki HTTP są również ignorowane w trybie dyskretnym.
Jeśli wartość jest źle sformułowana, odpowiedni kod stanu HTTP jest zwracany do klienta.
Właściwości komunikatu
Właściwości komunikatu to pary klucz-wartość zdefiniowane przez użytkownika zawarte w pliku message.Properties. W przypadku klienta o grubości SBMP wartości są ograniczone do byte, sbyte, char, DateTimeulonglongfloatuintdoubleintdecimalboolushortshortstringUriGuidDateTimeOffseti .TimeSpan
W przypadku protokołu REST/HTTP Uri i DateTimeOffset nie są obsługiwane (jeśli znajdują się w elemecie BrokeredMessage, nie są uwzględnione w nagłówkach HTTP). Typy identyfikatorów GUID są konwertowane na ciągi, a TimeSpan typy są konwertowane na "łączną liczbę sekund". Z powodu tych konwersji zostanie utracona wierność typu. Każda nazwa właściwości odpowiadająca ograniczonemu nagłówkowi HTTP (na przykład , ConnectionExpect, itd.) jest również wykluczona.
Każda para klucz-wartość w pliku message.Properties zostanie zamapowana na nagłówek HTTP w następującym formacie.
prop jest nazwą klucza i value jest ciągiem reprezentującym wartość:
prop_name: value
Typ wartości jest wnioskowany. Jeśli jest otoczony podwójnym cudzysłowem, wówczas:
Jeśli zawartość ma postać daty RFC2616, broker traktuje go jako
System.DateTime.W przeciwnym razie broker usuwa cudzysłowy i traktuje zawartość jako
System.String.
Jeśli nie jest otoczony podwójnym cudzysłowem, wówczas:
Jeśli zawartość ma wartość true lub false (uwzględniana jest wielkość liter!), broker traktuje ją jako wartość
System.Booleanz odpowiednią wartością.Jeśli zawartość może być analizowana jako liczba całkowita, broker traktuje ją jako System.Int64.
Jeśli zawartość może być analizowana jako liczba zmiennoprzecinkowa, broker traktuje ją jako
System.Double.W przeciwnym razie broker odrzuca komunikat.
Przykład:
product: Windows 7 Ultimate
price: 299.98
order-time: Fri, 04 Mar 2011 08:49:37 GMT
Treść wiadomości
Żadne konwersje nie są wykonywane między strumieniem treści żądania HTTP/odpowiedzi a elementem BrokerMessage.BodyStream.
Content-Type Ponadto nagłówek żądania HTTP jest zachowywany i zwracany do odbiornika komunikatów, aby umożliwić aplikacji poprawne interpretowanie bajtów w treści.
Jeśli komunikat zostanie utworzony z grubym klientem SBMP bez niestandardowego serializatora obiektów XML, typ zawartości będzie domyślnie "application/msbin1", czyli DataContractBinarySerializer, chyba że aplikacja jawnie zmieni go (na przykład message.ContectType=”application/mytype”) po utworzeniu komunikatu. Ta wartość typu zawartości jest zwracana do odbiorcy HTTP. Obowiązkiem aplikacji jest podjęcie decyzji, jak deserializować bajty w treści.
Powiązanie usługi Service Bus WCF ustawia ContentType element na koder komunikatów ContentType. Jeśli na przykład jest używany koder komunikatów tekstowych, oczekiwana Content-Type“application/soap+xml”wartość to .
Konwersja komunikatów
Konwersja między żądaniem/odpowiedzią HTTP a komunikatem jest wykonywana u dostawcy środowiska uruchomieniowego obsługi komunikatów HTTP. Metody konwersji są rozszerzone w celu uwzględnienia mapowania nagłówka/właściwości w tabeli we wcześniejszej części tej sekcji oraz zachowania typu zawartości komunikatu.