2016-09-14 8 views
3

イベントトピックからメッセージを読み込んで処理し、別のトピックのメッセージを作成するWebJobがあります。ServiceBusTrigger WebJobの異なるサービスバス接続文字列

これはサービスバストリガを使用して簡単に実現できます。我々は両方のトピック(ルート)へのアクセス権を持っているレベルで権限を送信し、聞く許可共有アクセスキーが含まれているサービス・バスの接続文字列を使用する必要があります。これを行うために

public void EventSubscriptionToNotificationTopic(
     [ServiceBusTrigger(Subscribe.TopicName, Subscribe.SubscriptionName)] BrokeredMessage input, 
     [ServiceBus(Publish.TopicName)] out BrokeredMessage output) 

これらのトピックで必要なアクセス許可に異なる接続文字列/ SASトークンを使用することができます(イベントトピックのサブスクリプションを聴いて、公開するトピックを送信してください)。

サービスバスのトリガーまたは属性が使用する接続をすべて指定することは可能ですか?

もし私が自分自身をロールバックしなければならないかもしれません。サービスバスのトリガーとWebJob接続文字列を使ってメッセージを読んでからTopicClientを使ってパブリッシュトピックに新しいメッセージを作成してください。

答えて

6

使用する接続文字列を指定できるServiceBusAccountAttributeがあります。

ので、あなたのコードは、これを見ることができます:

public void EventSubscriptionToNotificationTopic(
    [ServiceBusTrigger(Subscribe.TopicName, Subscribe.SubscriptionName, AccessRights.Listen), 
    ServiceBusAccount("Topic1Listen")] BrokeredMessage input, 
    [ServiceBus(Publish.TopicName, AccessRights.Send), 
    ServiceBusAccount("Topic2Send")] out BrokeredMessage output) 
    { 
     ... 
    } 

Topic1ListenTopic2Sendは接続の名前ですAccessRightsあなたも指定する必要がありますあなたのapp.configでは、しかしconfigファイルの中であなたは接頭辞の名前に接頭語を付ける必要があります

<connectionStrings> 
    ... 
    <add name="AzureWebJobsTopic1Listen" connectionString="..." /> 
    <add name="AzureWebJobsTopic2Send" connectionString="..." /> 
</connectionStrings> 
AzureWebJobs

でnstringはだからあなたの設定ファイルに次のようになります2つのconnectionStringsをする必要があります