Функция триггера EventHub получить форму имени EventHub Настройки приложения - PullRequest
0 голосов
/ 16 марта 2019

Почему EventHub Trigger, написанный на C # (не C # Script), принимает некоторые значения из настроек приложения, но не все?

Я настроил функцию запуска концентратора событий, например,

[FunctionName("MyFristTriggerFunction")]
public static void MyFristTriggerFunction(
    [EventHubTrigger("MyEventHub", Connection = @"EventHubConnectionString")] EventData[] events
    ILogger log)
{
    var exceptions = new List<Exception>();

    foreach (EventData eventData in events)
    {
        try
        {
            string messageBody = Encoding.UTF8.GetString(eventData.Body.Array, eventData.Body.Offset, eventData.Body.Count);

            log.LogInformation($"C# Event Hub trigger function processed a message: {messageBody}");
        }
        catch (Exception e)
        {
            // We need to keep processing the rest of the batch - capture this exception and continue.
            // Also, consider capturing details of the message that failed processing so it can be processed again later.
            exceptions.Add(e);
        }
    }
    // Once processing of the batch is complete, if any messages in the batch failed processing throw an exception so that there is a record of the failure.

    if (exceptions.Count > 1)
        throw new AggregateException(exceptions);

    if (exceptions.Count == 1)
        throw exceptions.Single();
}

Это прекрасно работает, если я передам строковое значение - MyEventHub .Однако я хотел бы передать имя концентратора событий в качестве переменной, которую можно использовать в настройках приложения, аналогично EventHubConnectionString .Если я изменяю объявление,

public static void MyFristTriggerFunction(
    [EventHubTrigger(@"EventHubAppSettings", Connection = @"EventHubConnectionString")] EventData[] events
    ILogger log)
{

я получаю сообщение об ошибке, что фактический концентратор событий - "EventHubAppSettings" не может быть найден.Это то, что должно быть жестко закодировано?

1 Ответ

0 голосов
/ 16 марта 2019

вы можете указать eventHubName следующим образом и настроить это свойство evenHubName в настройках приложения

[FunctionName("MyFristTriggerFunction")]
public static void MyFristTriggerFunction(
    [EventHubTrigger("%eventHubName%", Connection = @"EventHubConnectionString")] EventData[] events
    ILogger log)
{

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs#trigger---configuration

path EventHubName Имя концентратора событий. Можно ссылаться через приложение настройки% eventHubName%

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