c# - 在 azure 函数中获取队列名称或主题+订阅者名称(Azure 服务总线触发函数)

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

是否可以在服务总线触发的 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
}

最佳答案

需要获取的是队列的名称,这是QueueClient的一个属性,但是Microsoft.Azure.ServiceBus.QueueClient本身是无法序列化的。 Microsoft.Azure.ServiceBus.Message 可以序列化,但没有队列名称属性。 (而且Microsoft.Azure.ServiceBus.Message没有父类,这意味着一般不可能通过这个类获取queuename。)

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

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

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

关于c# - 在 azure 函数中获取队列名称或主题+订阅者名称(Azure 服务总线触发函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65000750/

相关文章:

node.js - 如何从 Nodejs 中的同步 Azure 函数返回结果

powershell - 用于创建 Azure 服务总线队列和主题的 Azure powershell cmdlet

azure - 无法使用 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 设置扩展 azure 函数实例

c# - AMAZON Api 认证错误

azure - ftp 到 azure 存储 blob(触发处理)

c# - Newtonsoft.Json 自定义日期序列化

c# - 如何设置 Azure Functions 的 MaxReceivedMessageSize

oracle - 捕获 Azure 中 Oracle DB 的插入、更新和删除事件

c# - NHibernate 不保存实体

c# - 在 C# 中从匿名类型生成类