【问题标题】:Get Queue name or Topic+Subscriber name in azure function (Azure Service Bus triggered functions)在 azure 函数中获取队列名称或主题+订阅者名称(Azure 服务总线触发函数)
【发布时间】:2020-11-25 08:13:34
【问题描述】:

是否可以在服务总线触发的 Azure 函数中获取队列名称?

我知道如果 QueueName 或 TopicName+SubscriberName 是硬编码的,这是可能的。在这种情况下,我可以创建一个 const 字符串并在函数中使用它。但是,我的服务总线触发器使用 "%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
}

【问题讨论】:

标签: c# azure-functions azureservicebus azure-servicebus-queues azure-servicebus-topics


【解决方案1】:

你需要得到的是队列的名字,它是QueueClient的一个属性,但是Microsoft.Azure.ServiceBus.QueueClient本身是不能序列化的。 Microsoft.Azure.ServiceBus.Message 可以序列化,但没有 queuename 属性。 (而且Microsoft.Azure.ServiceBus.Message没有父类,也就是说一般无法通过这个类获取queuename。)

可以将queuename作为消息的一部分传入,比如输入json格式的消息:

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

那么就可以在code中获取queuename了。(也可以通过这种方式在bindings中获取这个值。所有以json格式传入的key值都可以在binding中获取。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2023-02-17
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多