Aracılığıyla paylaş


İleti Üst Bilgileri ve Özellikleri

Bu bölümde ileti üst bilgileri ve özellikleri açıklanmaktadır.

İleti üst bilgileri

İleti gönderirken aşağıdaki ileti özelliklerini belirtebilirsiniz. Tek bir ileti gönderilir veya alınırsa, bu özellikler JSON ile kodlanmış biçimde BrokerProperties HTTP üst bilgisinde yer alır. Bir toplu ileti gönderilirse, bu özellikler JSON ile kodlanmış HTTP gövdesinin bir parçasıdır. Daha fazla bilgi için bkz. İleti Gönderme ve İleti Gönderme Toplu İşlemi.

Aşağıdaki tabloda Microsoft.ServiceBus.Messaging.BrokeredMessage özellikleri listelenmiştir . Özellikler herhangi bir sırada görünebilir. Bir özellik belirtilmezse, Service Bus bu özellik için varsayılan değeri kullanır. Listelenenler dışındaki aracı özellikleri yoksayılır. Kabul edilen özellikler, belirtilen api sürümünün değerinden bağımsızdır. HTTP isteğinde api-version tanımlayıcısı gerekli değildir.

SessionId ve PartitionKey özelliklerinin her ikisi de ayarlanmışsa, bunların aynı değere ayarlanması gerekir.

adlı BrokerProperties bir HTTP üst bilgisi tüm BrokeredMessage üst bilgileri içerir. Özellikler JSON biçimlidir. Bu, özellikleri genişletmeyi BrokeredMessage kolaylaştırır. Ayrıca, web kullanımı kolay JSON biçiminden yararlanarak web programlama modeline hizalanır. Bu, daha az dize ayrıştırma ile ileti özelliklerini üretmeyi ve tüketmeyi kolaylaştırır. Aşağıda bir üst bilgi örneği BrokeredMessage verilmiştir:

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

Aşağıdaki tabloda özelliklerin HTTP üst bilgilerine nasıl BrokeredMessage eşlendiği gösterilmektedir.

BrokeredMessage (SBMP) Parça Tür HTTP üst bilgisi Erişilebilirlik HTTP Req/Res
Contenttype string İçerik Türü get, set Req, Res
CorrelationId string BrokerProperties{CorrelationId} get, set Req, Res
SessionID string BrokerProperties {SessionId} get, set Req, Res
DeliveryCount int BrokerProperties {DeliveryCount } get Res
LockedUntilUtc DateTime BrokerProperties{LockedUntil} get Res
LockToken Guid BrokerProperties{LockToken} get Res
Messageıd string BrokerProperties{MessageId} get, set Res
Etiketle string BrokerProperties {Label} get, set Req, Res
Replyto string BrokerProperties {ReplyTo} get, set Req, Res
EnqueuedTimeUtc Tarih-Saat Tarih get Res
SequenceNumber long BrokerProperties {SequenceNumber} get Res
TimeToLive TimeSpan BrokerProperties koleksiyonu {TimeToLive} get, set Req, Res
Amaç string BrokerProperties {To} get, set Req, Res
ScheduledEnqueueTimeUtc DateTime BrokerProperties {ScheduledEnqueueTimeUtc} get, set Req, Res
ReplyToSessionId string BrokerProperties {ReplyToSessionId} get, set Req, Res
PartitionKey string BrokerProperties {PartitionKey} get, set Req, Res

Bu özelliklere ek olarak, özel özellikler belirtebilirsiniz. Tek bir ileti gönderilir veya alınırsa, her özel özellik kendi HTTP üst bilgisine yerleştirilir. Bir toplu ileti gönderilirse, özel özellikler JSON ile kodlanmış HTTP gövdesinin bir parçasıdır. Daha fazla bilgi için bkz. İleti Gönderme ve İleti Gönderme Toplu İşlemi.

Notlar

  • DateTime üst bilgileri RFC2616 tarafından tanımlandığı şekilde biçimlendirilir: https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3. Örneğin, "Güneş, 06 Kas 1994 08:49:37 GMT".

  • BrokerProperties {TimeToLive}, TimeSpan'ın saniye sayısıdır (çift).

  • ExpiresAtUtcve BrokerProperties {TimeToLive}kaynaklarından Date türetilebileceği için buna karşılık gelen bir HTTP üst bilgisi yoktur.

  • Alma erişimcisi olan ileti üst bilgileri yalnızca HTTP yanıtında (örneğin, alınan ileti) görünebilir. Bu üst bilgiler HTTP isteğinde (yani gönderilen iletide) mevcut olduğunda sessizce yoksayılır. Tanınmayan HTTP üst bilgileri de sessizce yoksayılır.

  • Değer yanlış biçimlendirilmişse, istemciye uygun bir HTTP durum kodu döndürülür.

İleti özellikleri

İleti özellikleri, içinde bulunan kullanıcı tanımlı anahtar-değer çiftleridir message.Properties. SBMP kalın istemcisi için değerler , , , , , short, ushort, longuintintulong, float, double, , DateTimedecimalDateTimeOffsetstringUriGuidboolve TimeSpanile sınırlıdır.bytecharsbyte

REST/HTTP Uri için ve DateTimeOffset desteklenmez (içindeyseler BrokeredMessage, HTTP üst bilgilerine dahil değildirler). GUID türleri dizelere, TimeSpan türler ise "toplam saniye" olarak dönüştürülür. Bu dönüştürmeler nedeniyle tür uygunluğu kaybolur. Kısıtlanmış HTTP üst bilgisine karşılık gelen tüm özellik adları da (örneğin, Connection, Expectvb.) hariç tutulur.

içindeki message.Properties her anahtar-değer çifti aşağıdaki biçimde bir HTTP üst bilgisine eşlenir. prop anahtar adıdır ve value değerin dize gösterimidir:

prop_name: value  

Değerin türü çıkarılır. Çift tırnak içine alınıyorsa:

  • İçerik bir RFC2616 tarih saati biçimindeyse, aracı bunu olarak System.DateTimeele alır.

  • Aksi takdirde, aracı tırnakları kaldırır ve içeriği olarak System.Stringele alır.

Çift tırnak içine alınmamışsa:

  1. İçerik true veya false (büyük/küçük harfe duyarlı!) ise, aracı bunu ilgili değerle birlikte olarak System.Boolean değerlendirir.

  2. İçerik tamsayı olarak ayrıştırılabilirse, aracı bunu System.Int64 olarak kabul eder.

  3. İçerik kayan noktalı bir sayı olarak ayrıştırılabilirse, aracı bunu olarak System.Doublekabul eder.

  4. Aksi takdirde, aracı iletiyi reddeder.

Örnek:

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

İleti gövdesi

HTTP isteği/yanıt gövdesi akışı ile arasında dönüştürme yapılmaz BrokerMessage.BodyStream. Ayrıca, Content-Type HTTP isteğindeki üst bilgi korunur ve uygulamanın gövdedeki baytları doğru yorumlamasına izin vermek için ileti alıcısına döndürülür.

İleti özel xml nesnesi serileştiricisi olmadan SBMP kalın istemcisiyle oluşturulduysa, uygulama ileti oluşturulduktan sonra açıkça değiştirmediği message.ContectType=”application/mytype”sürece içerik türü varsayılan olarak "application/msbin1" DataContractBinarySerializerolarak ayarlanır. Bu içerik türü değeri HTTP tüketicisine döndürülür. Gövdedeki baytların seri durumdan çıkarılmasına karar vermek uygulamanın sorumluluğundadır.

WCF Service Bus bağlaması, iletisini kodlayıcının ContentTypeöğesine ayarlarContentType. Örneğin, bir metin iletisi kodlayıcısı kullanılırsa, öğesinin Content-Type olması beklenir “application/soap+xml”.

İleti dönüştürme

HTTP isteği/yanıtı ile ileti arasında dönüştürme, HTTP mesajlaşma çalışma zamanı sağlayıcısında gerçekleştirilir. Dönüştürme yöntemleri, bu bölümün önceki bölümlerindeki tabloda üst bilgi/özellik eşlemesini içerecek ve iletinin içerik türünü koruyacak şekilde genişletilir.