小编use*_*450的帖子

Cosmos SDK3 Container 可以单例吗?

我想减少 Azure Cosmos DB SQL-API 的负载,该 API 通过依赖项注入从 .NET Core Web API 调用。

在 App Insights 中,我注意到每次调用 Web API 都会导致对 Cosmos 的 GetDatabase 和 GetCollection 调用,当 Cosmos 负载较重时,这可能需要 5 秒才能运行。

我做了CosmosClient一个单例(例如这里的建议 - https://learn.microsoft.com/en-us/azure/cosmos-db/performance-tips-dotnet-sdk-v3-sql

然而,我找不到任何关于DatabaseContainer对象是否也可以是单例的建议,因此它们是为每个对 Web API 的请求创建的。

我检查数据库和集合是否存在(例如,遵循此处的建议 - https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.cosmosclient.getdatabase?view=azure-dotnet#备注https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.cosmosclient.getcontainer?view=azure-dotnet#remarks

这意味着对于 Web API 的每个请求,都会运行以下代码

var databaseResponse = await this.cosmosClient.CreateDatabaseIfNotExistsAsync(
    this.databaseConfiguration.DatabaseName,
    throughput: this.databaseConfiguration.DatabaseLevelThroughput);
var database = databaseResponse.Database;
var containerResponse = await database.CreateContainerIfNotExistsAsync(containerId, partitionKey);
var container = containerResponse.Container;
Run Code Online (Sandbox Code Playgroud)

我可以创建单例Database并将Container …

c# azure-cosmosdb azure-cosmosdb-sqlapi

9
推荐指数
1
解决办法
6049
查看次数

如何使用从链接的 ARM 模板返回的 secureObject 或 securestring

如何使用返回的值securestringsecureObject从链接的 ARM 模板返回的值?

例如,一个子链接模板名为CreateStorage

  1. 创建 Azure 存储帐户
  2. 在该帐户上创建 blob 容器
  3. 为容器创建 SAS 密钥
  4. 返回模板部分中的 SAS 密钥outputs

例如,在模板输出中返回 SAS:

"outputs": {
    "createdContainerSas": {
        "type": "string",
        "value": "[concat('https://', variables('storageAccountName'), '.blob.core.windows.net/', variables('containerName'), '?', listServiceSas(variables('storageAccountName'), '2018-07-01', variables('importSasInputs')).serviceSasToken)]"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,主模板会将 SAS 密钥添加到 KeyVault,以便应用程序的其余部分可以使用它。主模板获取值如下:

"value": "[reference('CreateStorage').outputs.createdContainerSas.value]"
Run Code Online (Sandbox Code Playgroud)

问题在于,当前返回的 SAS 密钥意味着string它在 Azure 部署 UI 中以纯文本形式显示。

但是,当我将返回对象的类型更改为 orsecurestringsecureObject,然后createdContainerSas.value调用时,会遇到以下错误:

{\r\n \"code\": \"InvalidTemplate\",\r\n \"message\": \"Unable to process template language expressions for resource '/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.Resources/deployments/CreateKeyVault' at line …
Run Code Online (Sandbox Code Playgroud)

securestring azure azure-rm-template

8
推荐指数
1
解决办法
4922
查看次数

如何编写 Azure Cosmos COUNT DISTINCT 查询

目标

返回 Cosmos 集合分区内特定文档字段的不同值的计数。

脚步

如果我在 Azure Cosmos 数据库上运行以下查询,

SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'
Run Code Online (Sandbox Code Playgroud)

我按预期得到一行,例如以下响应

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

但是,如果我随后运行以下查询以尝试通过以下查询计算响应中不同文档的数量

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

它返回

[
    6
]
Run Code Online (Sandbox Code Playgroud)

c.field这是设置为 的文档总数,"abc"而不是 的不同值的数量c.field

问题

请您帮助我理解为什么查询返回 的文档数量而不是不同值的数量c.field,以及是否有一个查询将返回 的不同值的数量c.field,即 1?

编辑-PS。我知道这是一个人为的示例,因为根据定义,唯一值的数量c.field始终为 1 - 我故意从实际情况简化了这一点。

distinct azure azure-cosmosdb azure-cosmosdb-sqlapi

6
推荐指数
1
解决办法
4052
查看次数

在 Windows 7 中创建新的 JFileChooser 作为本地系统帐户时 Win32ShellFolder2.access 中的 NPE

我已经为创建 JFileChooser 的 Swing GUI 编写了单元测试。由于单元测试作为服务在构建服务器上运行,因此单元测试需要作为本地系统帐户运行。但是,当单元测试尝试创建新的 JFileChooser 时,它们会抛出 NullPointerException。

我已将问题简化为将以下主类作为本地系统帐户运行(不是真正的代码)

package com.example.mcgr;

import javax.swing.*;
import java.io.IOException;

public class FileChooserAsSystem {

    public static void main(String[] args) throws IOException {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.showDialog(null, "Ok");
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下构建文件。

<project>

<target name="clean">
    <delete dir="build"/>
</target>

<target name="compile" depends="clean">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/FileChooserAsSystem.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="com.example.mcgr.FileChooserAsSystem"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java …
Run Code Online (Sandbox Code Playgroud)

java swing unit-testing jfilechooser local-system-account

5
推荐指数
1
解决办法
3598
查看次数