2015-02-23 93 views
1

我參與了一個多層項目,其中一部分消耗了來自第三方系統的「事件」流。供應商通過Azure服務總線主題發佈這些主題 - 它們提供,控制&管理總線。我們僅提供URI,TopicName和Subscription細節。WebJob ServiceBus主題權限

我們的方法是在SDK中使用提供的ServiceBusTrigger將Webjob放在一起,以處理偵聽處理它們到我們系統中的新消息&。然而,我們似乎遇到了障礙,因爲工作不斷從主題中讀取。該作業失敗,一個模糊的Timeout Exception

Unhandled Exception: System.TimeoutException: The timeout elapsed upon attempting to obtain a token while accessing 'https://****-sb.accesscontrol.windows.net/WRAPv0.9/'. 
---> System.IdentityModel.Tokens.SecurityTokenException: The token provider was unable to provide a security token while accessing 'https://****-sb.accesscontrol.windows.net/WRAPv0.9/'. 
Token provider returned message: 'The operation has timed out'. 

但進一步下跌,跟蹤包括:

[ERR] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[ERR] at Microsoft.ServiceBus.NamespaceManager.OnEndTopicExists(IAsyncResult result) 
[ERR] at Microsoft.ServiceBus.NamespaceManager.EndTopicExists(IAsyncResult result) 

廠商後來證實,只允許/要求認購對主題是Listen

任何人都可以確認ServiceBusTrigger的許可要求是什麼?

而作爲一個+1,就假設它,無論出於何種原因,需要更多的Listen(即需要Manage),會有人想提出一種替代的方法呢?丟失WebJob基礎架構(該項目已經有3個其他工作)似乎是一種恥辱 - 尤其是像異步&併發處理來自主題

回答

5

要關閉此功能,我們對WebJobs SDK(請求請求:https://github.com/Azure/azure-webjobs-sdk/pull/528)進行了建議更改。這將在下一個版本中發佈。下面是如何指定每個屬性的AccessRights一個例子:

public static void JobFunction(
    [ServiceBusTrigger("inputqueue", AccessRights.Listen)] string message, 
    [ServiceBus("outputqueue", AccessRights.Send)] out string message) 
{ 
    . . . 
} 

如果沒有指定,默認將是「管理」。當設置爲管理以外的任何其他內容時,SDK不會嘗試創建任何SB資源。我認爲這符合你的需求?

+0

感謝馬修。我們已經圍繞目前的主題實現了自己的包裝,但它遠非完美,因爲我們顯然沒有儀表板集成,並且有些問題標誌着正常關機。 一旦上述修復發佈在穩定版本中,我們一定會在不久的將來重新審視這個問題。 – Ian 2015-06-13 06:40:44

1

的異步功能的丟失SDK會進行以下調用,這將需要管理權限。 Microsoft.Azure.WebJobs.ServiceBus.Listeners.NamespaceManagerExtensions。 如果您不能設置這些權限,一種替代方法是不要將SDK用於服務總線觸發器,而是將其用於其他任何事情。

+0

感謝您的確認Pranav - 我會使用'MessageClient.OnMessageAsync()'回調把一些東西放在一起 我想說,有一個相當引人注目的業務用例來支持供應商 - 客戶端場景賣方只提供監聽給定的主題(或隊列)。我猜想一個選擇是向觸發器屬性('MessageBusTriggerConnectionType.Managed' /'.Listener')添加Enum標誌 - 默認爲Managed以保持當前行爲,但如果設置爲Listener,則跳過任何主題描述/ CreateIfNotExists調用 – Ian 2015-02-24 07:18:25

+0

謝謝你的建議。我會把它帶回隊中。 – 2015-02-24 16:48:41