匯出 (0) 列印
全部展開

2012 年 10 月份版本的新功能

更新日期: 2015年3月

Microsoft Azure 服務匯流排 2012 年 10 月份版本包含許多新的特色與功能。本主題摘要說明新的功能且包含其他資訊的連結。

服務匯流排 僅支援有限範圍的值來設定訊息鎖定。在某些情況下,您可能需要更長的訊息鎖定期間 (透過租賃延長或更高的預設值)。您現在可以更新訊息鎖定。支援下列功能:

  • 能夠更新訊息的鎖定。

  • 訊息鎖定繫結至工作階段。

  • 取得的鎖定維持 60 秒 (預設),最長 5 分鐘。這與先前的行為相同。

呼叫 RenewLock 會更新訊息鎖定,並於 RenewLock 完成後更新 LockedUntilUtc 屬性。

對於訊息工作階段,當您使用其中一個用戶端方法 (例如 AcceptMessageSession) 或其中一個 Factory 方法 (例如 AcceptMessageSession) 接受工作階段時,則會填入 LockedUntilUtc 屬性。

服務匯流排 現在支援在佇列和訂閱上瀏覽訊息工作階段。您也可以擷取已在特定時間更新狀態的工作階段。

如需詳細資訊,請參閱:

您現在可以根據指定的 ODATA 篩選器來擷取主題、佇列或訂閱的清單。例如:

IEnumerable<QueueDescription> qList = namespaceClient.GetQueues("startswith(path, 'I') eq true" );
foreach (QueueDescription qd in qList)
{
    Console.WriteLine("qd : {0}", qd.Path);
}

使用 REST API 時,語法如下:

?$Filter=encoded_odata_filter_string_here

支援下列案例:

  • 列出路徑下的所有主題;例如,/test1/test2。

  • 列出前 5 分鐘更新的所有主題。

  • 列出前 5 分鐘存取的所有主題。

  • 列出前 5 分鐘建立的所有規則。

  • 列出路徑 /test1/test2 下至少有一個訊息的所有訂閱。

  • 列出路徑 /test1/test2 下至少有一個訊息的所有主題。

此功能可讓您將交易橫跨兩個實體 (在單一交易中接收、處理、傳送及完成)。例如:

var msftSubscription = "MSFT";
var stocksTopic = "stocks";
var messageReceiver = factory.CreateMessageReceiver(msftSubscription);
var messageSender = factory.CreateMessageSender(stocksTopic,VIAENTITYPATH);
//…
var brokeredMessage1 = messageReceiver.Receive();
//…
using (var scope = new TransactionScope())
{
    //…
    var brokeredMessage2 = ProcessMessage(brokeredMessage1);
    //…
    messageSender.Send(brokeredMessage2);
    brokeredMessage1.Complete();
    scope.Complete();
}

此功能支援一般的無狀態工作流程處理模式 (在單一交易中接收、處理、傳送、完成)。如需詳細資訊,請參閱 使用自動轉送來串連 Service Bus 實體.

此功能可讓您「連接」實體來建立豐富的訊息拓撲;例如從佇列/訂閱到佇列/主題。例如:

QueueDescription destinationQ = new QueueDescription("myQ2");
QueueDescription sourceQ = new QueueDescription("myQ1");
sourceQ.ForwardTo = “myQ2";
NamespaceManager nm = NamespaceManager.Create();
nm.CreateQueue(destinationQ);
nm.CreateQueue(sourceQ);

如需詳細資訊,請參閱 使用自動轉送來串連 Service Bus 實體.

服務匯流排 現在支援經由停用或重新啟用來更新現有的訊實實體 (佇列、主題或訂閱)。停用實體時,該實體無法傳送或接收訊息。

若要使用此功能,請設定 EntityStatus 列舉,然後使用實體描述物件作為參數來呼叫下列其中一個 API:

例如:

QueueDescription qd = namespaceManager.GetQueue("myQ");
qd.Status = EntityStatus.Disabled;
namespaceManager.UpdateQueue(qd);
qd.Status = EntityStatus.Active;
namespaceManager.UpdateQueue(qd);

舊版 服務匯流排 對於訂閱支援兩種篩選器。相互關聯篩選器的數量變得很龐大,但限於單一屬性/值:SQL 篩選器限於每個主題 2000 個執行個體。在某些情況下,您可以新增篩選器來支援大量的屬性名稱/值組合。此功能現在可讓您在屬性上以多個相等子句來設定篩選器。例如:

PropertyNameOne=’ValueOne’ AND PropertyNameTwo=ValueTwo AND PropertyNameTest=’ValueThree’
CorrelationFilter filter = new CorrelationFilter();
filter.Properties.Add(
new KeyValuePair<string, object>("name", 10));

此功能可讓您分批傳送、接收及處理訊息。若要使用此功能,請使用下列清單中的新 API。服務匯流排 提供同步與非同步版本的批次傳送與接收 API。

例如:

IEnumerable<BrokeredMessage> messageSet;
messageSender.SendBatch(messageSet);
messageSet = messageReceiver.ReceiveBatch(100); // max message count

在舊版 服務匯流排 中,當訊息發佈至主題時,訊息發佈一定會成功 (即使主題訊息沒有訂閱者也一樣)。換言之,在訊息發佈成功後非同步執行篩選器評估。如果訊息不符合任何訂閱者,則會捨棄訊息 (或根據原則而停止傳送訊息)。在某些情況下,訊息發佈時,訊息的發行者必須知道是否有任何訂閱者。服務匯流排 現在允許此狀況,如果訊息發佈時沒有訂閱者,則訊息發佈會失敗。

若要使用此功能,請將 EnableFilteringMessagesBeforePublishing 屬性設為 true。例如:

TopicDescription td = new TopicDescription("Topic");
td.EnableFilteringMessagesBeforePublishing = true;

此新功能可讓您在執行 AbandonDeferDeadLetter 作業時新增或修改訊息屬性。在應用程式處理錯誤的情況下,如果您要追蹤這是否會造成放棄訊息,此功能會很有用。在作法上,您可以在下列 API 的 propertiesToModify 參數中新增或修改訊息的屬性:

服務匯流排 引進新的類別,稱為 Microsoft.ServiceBus.Messaging.MessageCountDetails。此類別包含的屬性可讓您從主要訊息實體 (佇列、主題、訂閱) 的子佇列中擷取訊息的詳細資料。MessageCountDetails 屬性如下:

public long ActiveMessageCount { get; set; }
public long DeadletterMessageCount { get; set; }
public long ScheduledMessageCount { get; set; }
public long TransferMessageCount { get; set; }
public long TransferDeadLetterMessageCount { get; set; }

BrokeredMessage 類別包含新的屬性 IsBodyConsumed,可讓您檢查是否已取用訊息主體。例如,如果傳送作業失敗,您可以檢查是否可以嘗試重新傳送相同訊息。或者,如果收到訊息,您可以檢查是否已取用訊息主體。

在下列任一情況下,IsBodyConsumed 會設為 true

  1. 某人呼叫 GetBody 來取用訊息主體。

  2. 傳送作業已將訊息標示為已取用。

true 時,該訊息的任何 GetBodySend 作業會傳回例外狀況,指出已取用訊息。然後,您可以重新建構訊息來重試作業 (例如,傳送時對訊息執行 Clone)。

BrokeredMessage 類別包含新的方法 Clone。此方法可讓您將訊息的複製品當作新訊息傳送。訊息的屬性和主體會複製到複製品,但新訊息的系統屬性維持不變,讓您選擇性地複製。請注意,您可以在複製作業後手動設定 MessageId 屬性。

如果您要將應用程式部署至一個環境 (例如,測試環境),再部署至另一個環境 (例如實際執行環境),則連接字串會很有用。您只需要在 App.config 中變更連接字串來指向新的 服務命名空間,然後重新啟動應用程式即可。

如需詳細資訊,請參閱 組態連接字串.

WebHttpRelayBinding 繫結現在支援 JSON 內容格式。若要將轉送接聽程式更新為接收 JSON 訊息,請設定 WebHttpRelayBindingContentTypeMapper 屬性。如需範例,請參閱 WebContentTypeMapper 範例

ConnectionStatusBehavior 行為先前只能使用單向繫結。您現在可以將其與所有轉送接聽程式繫結搭配使用。

服務匯流排 轉送繫結會使用 HTTP 1.1 「區塊」傳輸編碼。部份舊版 Proxy 只支援 HTTP 1.0 或未正確支援 HTTP 1.1 區塊傳輸編碼。這可能會導致這類舊版 Proxy 後面的用戶端與 服務匯流排 轉送的連線失敗。為了解決這個問題,服務匯流排 轉送繫結現在會在先前嘗試連線失敗後,嘗試使用 HTTPS 進行連線。若要使用此功能,請將 SystemConnectivity 屬性中的Mode 值設為 AutoDetectHttp。如需詳細資訊,請參閱 ConnectivityMode 列舉的文件。

連線會快取用於成功連線的通訊協定,而且後續的重新連線作業最初會嘗試使用快取的通訊協定類型。

在防火牆後面進行裝載時,為了要讓此項功能運作,您必須允許連至連接埠 443 的輸出 HTTPS 連線。

Proxy 需要驗證時,轉送連線可能會失敗。服務匯流排 轉送繫結現在支援透過針對整合式 Windows 驗證或針對交涉而設定的 Proxy 進行連線。

顯示:
© 2015 Microsoft