开发团队中具有服务总线触发器的Azure Functions V2

时间:2018-06-26 06:55:48

标签: c# azure-functions azureservicebus

我们具有使用服务总线触发器创建的Azure功能(V2)。

[FunctionName("MyFunctionName")]
public static async Task Run(
    [ServiceBusTrigger("%MyQueueName%", Connection = "ServiceBusConnectionString")]
    byte[] messageBytes,
    TraceWriter log)
{
    // code to handle message
}

队列名称在local.settings.json文件中定义:

{
    "Values": {
        ...
        "MyQueueName": "local-name-of-my-queue-in-azure",
        ...
    }
}

这很好用,因为在部署时,我们可以为我们拥有的各种部署环境将环境变量设置为dev-queue-namelive-queue-name等。

但是,如果在本地连接了多个开发人员,则假设local.settings.json文件在源代码控制中并且需要正确维护环境变量,则本地功能应用程序运行程序将全部连接到< em>相同的队列,并且哪个开发人员的应用程序将提取并处理消息是随机的。

我们需要的是每个开发人员都有他们自己的队列,但是我们不想从源代码控制中删除JSON配置文件,以便我们可以维护一个不同的文件(因为它包含其他需要的信息更新)。

我们如何让运行应用程序的每个开发人员/计算机都具有唯一的队列名称(但已知,以便我们可以在云中创建服务总线队列)?

1 个答案:

答案 0 :(得分:1)

您可以通过环境变量覆盖设置值。指定为系统环境变量的设置优先于local.settings.json文件中的值。只需定义一个名为MyQueueName的环境变量即可。

话虽如此,我认为通常不建议将local.settings.json提交给源代码管理。我想您还会在其中存储Service Bus连接字符串,这意味着您将机密存储在源代码管理中。

请注意,默认.gitignore文件已列出该文件。

如果您需要在源代码管理中使用它,我将提交local.settings.json版本,其中所有变量均带有假值,然后让每个开发人员在本地设置适当的值,然后忽略提交时的更改(设置{{ 1}})。