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