[英]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.