簡體   English   中英

獲取 azure function 中的隊列名稱或主題+訂閱者名稱(Azure 服務總線觸發函數)

[英]Get Queue name or Topic+Subscriber name in azure function (Azure Service Bus triggered functions)

是否可以在服務總線觸發 Azure Function 中獲取隊列名稱?

我知道如果 QueueName 或 TopicName+SubscriberName 是硬編碼的,這是可能的。 在這種情況下,我可以創建一個 const 字符串並在 function 中使用它。 但是,我的服務總線觸發器使用"%ServiceBusSettings:QueueName%""%ServiceBusSettings:TopicName%""%ServiceBusSettings:SubscriberName%"從設置中獲取名稱。

在這種可配置的情況下,如何獲取隊列或主題+訂閱者名稱?

[FunctionName("topic-and-subscriber-function")]
public async Task Run(
    [ServiceBusTrigger("%ServiceBusSettings:TopicName%", "%ServiceBusSettings:SubscriptionName%", Connection = "ServiceBusSettings:ServiceBusConnection")] Message message,
    ILogger log, MessageReceiver messageReceiver)
{
    // Get TopicName and SubscriberName
}

[FunctionName("queue-function")]
public async Task Run(
    [ServiceBusTrigger("%ServiceBusSettings:QueueName%", Connection = "ServiceBusSettings:ServiceBusConnection")] Message message,
    ILogger log, MessageReceiver messageReceiver)
{
    // Get QueueName
}

你需要得到的是隊列的名字,它是QueueClient的一個屬性,但是Microsoft.Azure.ServiceBus.QueueClient本身是不能序列化的。 Microsoft.Azure.ServiceBus.Message 可以序列化,但沒有 queuename 屬性。 (並且Microsoft.Azure.ServiceBus.Message沒有父class。這意味着一般無法通過這個class獲取queuename。)

您可以將 queuename 作為消息的一部分傳入,例如輸入 json 格式的消息:

{
   "queuename":"testname",
   ...
}

然后就可以在code中獲取queuename了。(也可以通過這種方式在bindings中獲取這個值。所有以json格式傳入的key值都可以在binding中獲取。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM