İ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).
ExpiresAtUtc
veBrokerProperties {TimeToLive}
kaynaklarındanDate
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
, long
uint
int
ulong
, float
, double
, , DateTime
decimal
DateTimeOffset
string
Uri
Guid
bool
ve TimeSpan
ile sınırlıdır.byte
char
sbyte
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
, Expect
vb.) 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.DateTime
ele alır.Aksi takdirde, aracı tırnakları kaldırır ve içeriği olarak
System.String
ele alır.
Çift tırnak içine alınmamışsa:
İçerik true veya false (büyük/küçük harfe duyarlı!) ise, aracı bunu ilgili değerle birlikte olarak
System.Boolean
değerlendirir.İçerik tamsayı olarak ayrıştırılabilirse, aracı bunu System.Int64 olarak kabul eder.
İçerik kayan noktalı bir sayı olarak ayrıştırılabilirse, aracı bunu olarak
System.Double
kabul eder.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" DataContractBinarySerializer
olarak 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.