Azure 队列触发器功能 - 本地集成

Azure Queue Trigger Function - Local Integration

我正在使用 Visual Studio 创建一个简单的队列触发 azure 函数。我正在将它与我的存储帐户连接起来,但由于某种原因它无法正常工作。感谢任何帮助。

这是我的代码:(由 VS 自动生成)

[FunctionName("QueueTest")]
public static void Run([QueueTrigger("my-queue", Connection = "")]string myQueueItem, TraceWriter log)        
{            
    log.Info($"C# Queue trigger function processed: {myQueueItem}");
}

这是我的local.settings.json

{
"IsEncrypted": false,  
  "Values":{

  "AzureWebJobsStorage":"DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=accountkey"
  }
}

您需要将队列存储帐户的连接字符串添加到 local.settings.json,然后提供连接字符串的名称作为 QueueTrigger 的连接参数,例如在 local.settings.json

"Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=accountkey",
    "MyStorage": "DefaultEndpointsProtocol=https;AccountName=accountname2;AccountKey=accountkey2;EndpointSuffix=core.windows.net"
}

并在您的代码中

[QueueTrigger("my-queue", Connection = "MyStorage")]string myQueueItem

队列触发器默认使用 AzureWebJobsStorage 帐户。您需要做的只是从属性中删除 Connection 参数:

[FunctionName("QueueTest")]
public static void Run([QueueTrigger("my-queue")]string myQueueItem, TraceWriter log)        
{            
    log.Info($"C# Queue trigger function processed: {myQueueItem}");
}

理想情况下,如果您是 Windows 用户,请使用 Azure Storage Emulator 连接到本地队列。然后更改 local.settings.json 文件中的连接字符串:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
  }
}

如果您不是 Windows 用户,则必须连接到托管在 Azure 平台上的队列。为此,找到链接到您的函数的存储帐户并从他的设置中复制连接字符串(存储帐户 -> 访问密钥 -> 连接字符串)

所以我想通了这个问题。所有配置都很好。问题是,我的函数应用程序的 Azure 函数版本是 1,但由于某些原因,可能是因为最新 SDK/WebJobs,版本 1 无法正常工作。因此,我不得不使用 AzureFunctionVersion 2 创建另一个函数应用程序并且一切正常。