функция azure java CosmosDBTrigger-input и @ SignalROutput-output, ошибка: не удается создать информацию о коллекции

Я заменил защищенные данные заполнителями

Ошибка при запуске локально, а также после развертывания -

Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.<Function-Name>'. Microsoft.Azure.WebJobs.Extensions.CosmosDB: Cannot create Collection Information for <Collection-Name> in database <Database-Name> with lease <Lease-Collection-Name> in database <Database-Name> : 
RequestUri: https://<Azure-Cosmos-DB-Account>.mongo.cosmos.azure.com/;
RequestMethod: GET;
Header: x-ms-version Length: 10;
Header: User-Agent Length: 48;
Header: x-ms-date Length: 29;
Header: Authorization Length: 82;
, Request URI: /, RequestStats: , SDK: Windows/10.0.18362 documentdb-netcore-sdk/2.10.1. Microsoft.Azure.DocumentDB.Core: 

файл local.settings.json -

{
  "IsEncrypted": false,
  "Values": {
    "JAVA_OPTS": "-Djava.net.preferIPv4Stack=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005",
    "AzureWebJobsStorage": "<Required value>",
    "AzureWebJobsDashboard": "<Required value>",
    "AzureSignalRConnectionString": "<Endpoint connection string>",
    "AzureCosmosDBConnection": "AccountEndpoint=https://<Azure Cosmos Db Account>.mongo.cosmos.azure.com:443/;AccountKey=<Required key>",
    "FUNCTIONS_WORKER_RUNTIME": "java"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "http://localhost:8080,http://localhost:4200",
    "CORSCredentials": true
  }
}

Код -

@FunctionName("Notify-Update")
    public void notifyDBUpdate(
            @CosmosDBTrigger(name = "dataInput",
                    databaseName = "demo",
                    collectionName = "bagi",
                    leaseDatabaseName = "demo",
                    leaseCollectionName = "leasebagi",
                    createLeaseCollectionIfNotExists = true,
                    connectionStringSetting = "AzureCosmosDBConnection")
                    String document,
            @SignalROutput(name = "dataOutput", hubName = "chat", connectionStringSetting = "AzureSignalRConnectionString") OutputBinding<String> dataOutput,
            final ExecutionContext context) {

        context.getLogger().info("Java CosmosDB Notification trigger processed a request: " + document);

Коллекция и БД уже созданы, но я еще не создавал коллекцию аренды.

Я работаю над приложением в реальном времени, используя функции cosmos db, signalr и azure, но я застрял с этой ошибкой в ​​течение довольно долгого времени.


person DEEP GAHLOT    schedule 30.03.2020    source источник


Ответы (1)


Похоже, вы используете учетную запись Mongo (ваша конечная точка <Azure-Cosmos-DB-Account>.mongo.cosmos.azure.com).

Согласно документации :

Привязки Azure Cosmos DB поддерживаются только для использования с SQL API.

person Matias Quaranta    schedule 01.04.2020
comment
Я понимаю, что теперь я пропустил чтение примечания на странице документации, спасибо за ваш ответ, но могу ли я как-то использовать статический клиент для подключения mongo в триггере cosmos db? если нет, у меня нет другого выхода, кроме как использовать базу данных SQL, спасибо - person DEEP GAHLOT; 02.04.2020
comment
Вы не можете использовать триггер с учетной записью Mongo, триггер внутренне обслуживает клиентов, которые используют SQL API (вот почему он не работает в вашем случае), вы не можете вставить в него своего собственного клиента, чтобы переопределить его. В этом случае единственный вариант - использовать SQL API, если вы хотите использовать триггер в Функциях Azure. - person Matias Quaranta; 02.04.2020