2016-09-14 69 views
3

我有一個WebJob,它從事件主題讀取消息,處理它們,然後在不同的主題上創建消息。ServiceBusTrigger WebJob的不同服務總線連接字符串WebJob

我可以使用服務總線觸發器輕鬆實現這一點。

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

要做到這一點,我們必須使用含有允許在其訪問這兩個議題(根)級別發送和收聽權限的共享訪問密鑰的服務總線連接字符串。

我們希望能夠使用不同的連接字符串/ SAS令牌鎖定到我們在這些主題上所需的權限(偵聽事件主題訂閱併發送主題以發佈到)。

是否可以指定服務總線觸發器或屬性將使用哪個連接?

如果不是,我不得不推出我自己的,也許只是使用服務總線觸發器和WebJob連接字符串來讀取消息,然後使用TopicClient在發佈主題上創建一條新消息?

回答

6

有一個ServiceBusAccountAttribute可讓您指定要使用的連接字符串。您還需要指定AccessRights

因此您的代碼可以看看這個:

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是連接的名稱在你的app.config中,但在配置文件中,你需要在連接的名稱前加上前綴與AzureWebJobs

nstring所以在你的配置文件,將需要兩個的ConnectionStrings看起來像:

<connectionStrings> 
    ... 
    <add name="AzureWebJobsTopic1Listen" connectionString="..." /> 
    <add name="AzureWebJobsTopic2Send" connectionString="..." /> 
</connectionStrings> 
相關問題