1

私は多層プロジェクトに携わっています。その一部は、サードパーティ システムからの「イベント」のストリームを消費しています。ベンダーは Azure Service Bus トピックを介してこれらを公開しています - バスを提供、制御、および管理します。URI、TopicName、およびサブスクリプションの詳細が提供されるだけです。

ServiceBusTrigger私たちのアプローチは、SDK で提供されている を使用して新しいメッセージのリッスンを処理し、システムへの処理をトリガーする Web ジョブをまとめることでした。ただし、ジョブがトピックからの読み取りに継続的に失敗するため、障害にぶつかったようです。ジョブはあいまいで失敗します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 つのジョブがあります)。特に、トピックからのメッセージの非同期処理や同時処理などの機能が失われています。

4

2 に答える 2

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)
{
    . . .
}

指定しない場合、デフォルトは「管理」になります。manage 以外に設定すると、SDK は SB リソースの作成を試みません。これはあなたのニーズを満たしていると思いますか?

于 2015-06-10T21:52:47.383 に答える
1

SDK は、管理権限を必要とする次の呼び出しを行います。Microsoft.Azure.WebJobs.ServiceBus.Listeners.NamespaceManagerExtensions. これらのアクセス許可を設定できない場合の 1 つの代替方法は、Service Bus トリガーに SDK を使用せず、それ以外のすべてに使用することです。

于 2015-02-24T01:53:38.080 に答える