我们具有使用服务总线触发器创建的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-name
,live-queue-name
等。
但是,如果在本地连接了多个开发人员,则假设local.settings.json
文件在源代码控制中并且需要正确维护环境变量,则本地功能应用程序运行程序将全部连接到< em>相同的队列,并且哪个开发人员的应用程序将提取并处理消息是随机的。
我们需要的是每个开发人员都有他们自己的队列,但是我们不想从源代码控制中删除JSON配置文件,以便我们可以维护一个不同的文件(因为它包含其他需要的信息更新)。
我们如何让运行应用程序的每个开发人员/计算机都具有唯一的队列名称(但已知,以便我们可以在云中创建服务总线队列)?
答案 0 :(得分:1)
您可以通过环境变量覆盖设置值。指定为系统环境变量的设置优先于local.settings.json
文件中的值。只需定义一个名为MyQueueName
的环境变量即可。
话虽如此,我认为通常不建议将local.settings.json
提交给源代码管理。我想您还会在其中存储Service Bus连接字符串,这意味着您将机密存储在源代码管理中。
请注意,默认.gitignore
文件已列出该文件。
如果您需要在源代码管理中使用它,我将提交local.settings.json
版本,其中所有变量均带有假值,然后让每个开发人员在本地设置适当的值,然后忽略提交时的更改(设置{{ 1}})。