Функция Azure с разными привязками

У меня есть приложение, которое отправляет некоторые события для очереди служебной шины Azure и функции Azure в качестве потребителя, поэтому у меня есть этот код для моей функции Azure:

    [FunctionName("application-events-consumer")]
    public async Task Run([ServiceBusTrigger("events", Connection = "ServiceBusConnectionString")]
        Message message,
        string messageId,
        ILogger log)
    {
        log.LogInformation($"MessageId={messageId}");

        var jsonData = Encoding.UTF8.GetString(message.Body);
        var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
        var deserialized = JsonConvert.DeserializeObject(jsonData, settings);

        await _mediator.Publish(deserialized);
    }

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


person Matheus Xavier    schedule 23.12.2020    source источник


Ответы (1)


Нет, очереди служебной шины Azure и очереди хранилища Azure - это две очень разные службы с совершенно разным техническим стеком. Таким образом, вы не можете просто переключить две строки подключения. Им нужны разные SDK, потому что у них разные привязки.

Единственное, что вы можете попробовать, - это иметь две функции: одну с привязкой к очереди хранилища, которую вы используете для локальной отладки, а другую с привязкой к очереди SB для работы в облаке. Оба просто принимают сообщение, и вы помещаете обработку в одну общую внутреннюю функцию. Однако это, конечно, не полностью проверит ваш стек.

person silent    schedule 23.12.2020
comment
После вашего ответа я подумал об этом и больше не собираюсь использовать функции Azure для этого сценария, я зарегистрирую обработчик сообщений - person Matheus Xavier; 23.12.2020