为什么 Azure 函数不写入服务总线主题
Why Azure function is not writing to Service Bus Topic
我的功能就像
[FunctionName("MyFunctionName")]
[return: ServiceBus("mytopic", Connection = "ServiceBusConnectionString")]
public static async Task<string> MyFunctionAsync([QueueTrigger("my-input-queue")] string msgIn, TraceWriter log)
{
我的local.settings.json有
{
"IsEncrypted": false,
"Values": {
"ServiceBusConnectionString": "[my connection string]"
}
}
其中 [my connection string]
是根据 共享访问策略 之一从 主连接字符串 复制粘贴的 [= =24=]发送声明。
这只是无声地失败:消息卡在 my-input-queue
中,并且没有错误写入日志流。但是我 100% 确定这个属性是问题所在,因为我已经部署了 100 种不同的组合来尝试让它工作:)。
有什么想法吗?
您缺少 QueueTrigger 所需的设置,因此您的函数不会触发队列中的新项目。您应该具有 AzureWebJobsStorage
和 AzureWebJobsDashboard
的值,并且您的 QueueTrigger 应该具有 Connection
字段的值。
有关如何在本地连接 QueueTriggers 和测试的更多信息,请参阅 。
根据我的测试,它应该与 servicebus 属性一起工作。以下是我的测试代码。
[return: ServiceBus("topicName",Connection = "ServiceBusConnectionString", EntityType = EntityType.Topic)]
public static async Task<string>Run([QueueTrigger("queueName")]string myQueueItem, TraceWriter log)
{
...
return myQueueItem; // write to the Topic.
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "xxxxxx",
"AzureWebJobsDashboard": "xxxxxxxx",
"ServiceBusConnectionString": "xxxxxx"
}
}
您可以从此 tutorial 获得有关 Azure 服务总线输出绑定的更多信息。您也可以通过以下方式做到这一点
[FunctionName("ServiceBusOutput")]
public static void Run([[QueueTrigger("queueName")]string myQueueItem,
TraceWriter log,
[ServiceBus("topicName",Connection = "ServiceBusConnectionString", EntityType = EntityType.Topic)]out string queueMessage)
{
log.Info("Azure Function Demo - Azure Service Bus Queue Topic");
queueMessage = myQueueItem;
}
我的功能就像
[FunctionName("MyFunctionName")]
[return: ServiceBus("mytopic", Connection = "ServiceBusConnectionString")]
public static async Task<string> MyFunctionAsync([QueueTrigger("my-input-queue")] string msgIn, TraceWriter log)
{
我的local.settings.json有
{
"IsEncrypted": false,
"Values": {
"ServiceBusConnectionString": "[my connection string]"
}
}
其中 [my connection string]
是根据 共享访问策略 之一从 主连接字符串 复制粘贴的 [= =24=]发送声明。
这只是无声地失败:消息卡在 my-input-queue
中,并且没有错误写入日志流。但是我 100% 确定这个属性是问题所在,因为我已经部署了 100 种不同的组合来尝试让它工作:)。
有什么想法吗?
您缺少 QueueTrigger 所需的设置,因此您的函数不会触发队列中的新项目。您应该具有 AzureWebJobsStorage
和 AzureWebJobsDashboard
的值,并且您的 QueueTrigger 应该具有 Connection
字段的值。
有关如何在本地连接 QueueTriggers 和测试的更多信息,请参阅
根据我的测试,它应该与 servicebus 属性一起工作。以下是我的测试代码。
[return: ServiceBus("topicName",Connection = "ServiceBusConnectionString", EntityType = EntityType.Topic)]
public static async Task<string>Run([QueueTrigger("queueName")]string myQueueItem, TraceWriter log)
{
...
return myQueueItem; // write to the Topic.
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "xxxxxx",
"AzureWebJobsDashboard": "xxxxxxxx",
"ServiceBusConnectionString": "xxxxxx"
}
}
您可以从此 tutorial 获得有关 Azure 服务总线输出绑定的更多信息。您也可以通过以下方式做到这一点
[FunctionName("ServiceBusOutput")]
public static void Run([[QueueTrigger("queueName")]string myQueueItem,
TraceWriter log,
[ServiceBus("topicName",Connection = "ServiceBusConnectionString", EntityType = EntityType.Topic)]out string queueMessage)
{
log.Info("Azure Function Demo - Azure Service Bus Queue Topic");
queueMessage = myQueueItem;
}