Триггер версии Azure Service Bus 2.0 не работает на сервере - PullRequest
0 голосов
/ 03 декабря 2018

Я создал одну консоль для отправки сообщения в раздел служебной шины Azure и создал один триггер раздела служебной шины.Локально работает нормально, но тот же код не работает после развертывания той же функции в Azure.Я новичок в Azure. Пожалуйста, помогите решить проблему и укажите мой код ниже.

host.json

{
  "version": "2.0",
  "aggregator": {
    "batchSize": 1000,
    "flushTimeout": "00:00:30"
  },
  "extensions": {
    "cosmosDb": {},
    "durableTask": {},
    "eventHubs": {},
    "http": {},
    "queues": {},
    "sendGrid": {},
    "serviceBus": {}
  },
  "functions": [],
  "functionTimeout": "00:05:00",
  "healthMonitor": {
    "enabled": true,
    "healthCheckInterval": "00:00:10",
    "healthCheckWindow": "00:02:00",
    "healthCheckThreshold": 6,
    "counterThreshold": 0.80
  },
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "Function.MyFunction": "Information",
      "default": "None"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 5
      }
    }
  },
  "singleton": {
    "lockPeriod": "00:00:15",
    "listenerLockPeriod": "00:01:00",
    "listenerLockRecoveryPollingInterval": "00:01:00",
    "lockAcquisitionTimeout": "00:01:00",
    "lockAcquisitionPollingInterval": "00:00:03"
  },
  "watchDirectories": [ "Shared", "Test" ]
}

local.setting.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;....",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "MyConnection": "Endpoint=sb://...."
  }
}

попробовал другой

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "MyConnection": "Endpoint=sb://",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "Host": {
    "LocalHttpPort": 7077
  }
}

Код функции:

 [FunctionName("Function1")]
    public static void Run([ServiceBusTrigger("*****", "*****", Connection = "MyConnection")]string mySbMsg, ILogger log)
    {
        log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
    }

MyConnection -> Передача строки подключения служебной шины здесь.

В локальном режиме мы можем получить отладкуДело в том, что если мы попробуем запустить одну и ту же функцию на другом сервере, она не будет прослушивать запрос.Где я сделал ошибку?помогите мне решить эту проблему!

Обновление А также, пока публикуете шину Azure, щелкните настройку приложения в Visual Studio.Затем вам нужно также передать строку подключения к удаленному.Тогда наверняка это сработает!

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Ваш файл local.settings.json будет иметь эти 3 значения (плюс другие) ...

"SvcBusConStr": "Endpoint=sb://myservicebus Con String",
"SvcBusTopicName": "my-topic-name",
"SvcBusSubscriptionName": "my-sub-name",

На странице экрана конфигурации приложения в Azure потребуются эти 3 записи

SvcBusConStr  Endpoint=sb://myservicebus Con String
SvcBusTopicName   my-topic-name
SvcBusSubscriptionName   my-sub-name

Обратите внимание на знаки процента на первых двух параметрах, чтобы прочитать настройки среды приложения.Я также добавил явное прослушивание только справа.

 [FunctionName("Function1")]
    public static void Run([ServiceBusTrigger("%SvcBusTopicName%", "%SvcBusSubscriptionName%", AccessRights.Listen, Connection = "SvcBusConStr")]string mySbMsg, ILogger log)
    {
        log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
    }

Мой ответ может не полностью охватывать функции Azure 2.0.

0 голосов
/ 03 декабря 2018

Убедитесь, что вы указали MyConnection в настройках приложения на портале Azure (Функции платформы> Настройки приложения> Раздел настроек приложения), local.settings.json не публикуется в Azure.

И я предлагаю удалитьдругие настройки кроме "version": "2.0" в host.json.Контент представляет собой пример для объяснения структуры host.json, нам они не нужны, просто укажите, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...