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

标签 c# azure-functions azureservicebus

我们拥有使用服务总线触发器创建的 Azure Functions (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 文件位于源代码管理中,需要正确维护环境变量,则本地函数 app运行程序都将连接到同一个队列,并且哪个开发人员的应用程序将拾取并处理消息是随机的。

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

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

最佳答案

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

话虽如此,我认为通常不建议将 local.settings.json 提交到源代码管理。我想您还将服务总线连接字符串存储在那里,这意味着您将 secret 存储在源代码管理中。

请注意,默认的 .gitignore 文件已将其列出。

如果您在源代码管理中需要它,我会提交一个 local.settings.json 版本,其中所有变量都带有假值,然后让每个开发人员在本地设置正确的值,然后忽略提交时的更改(设置assume-unchanged)。

关于c# - 开发团队中具有服务总线触发器的 Azure Functions V2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036622/

相关文章:

c# - 在 Windows Phone 8 中以编程方式(逐个单元格)读取/导入现有 Excel 文件

c# - 更新满足 datediff 约束的所有行的 int 列?

.net - Azure服务总线: all topic subscribers must process message

c# - 如何使用 Azure 服务总线实现 FIFO 主题

c# - 什么时候应该使用私有(private)变量,什么时候应该使用属性。支持字段应该在同一个类中使用吗?

c# - .NET Core SDK/运行时和 NuGet 包版本是否必须匹配?

C# - 从数据库中检索数据并将其分配给变量

azure - Azure Function App 如何针对数百万并发用户请求进行扩展

c# - 错误 : Azure. Messaging.EventHubs : The path to an Event Hub may be specified as part of the connection string or as a separate value, 但不是两者

android - 无法验证我的 ACS token