Поделиться через


Общие сведения о триггере RabbitMQ для службы "Функции Azure"

Триггер RabbitMQ используется для реагирования на сообщения из очереди RabbitMQ.

Примечание.

Привязки RabbitMQ полностью поддерживаются только в планах Elastic Premium и Выделенных (Служба приложений). Планы потребления и потребления Flex пока не поддерживаются.

Привязки RabbitMQ не поддерживаются средой выполнения Функции Azure версии 1.x.

Сведения об установке и настройке см. в обзорной статье.

Пример

Вы можете создать функцию C# с помощью одного из следующих режимов C#:

  • Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в долгосрочной поддержке (LTS) и версиях, отличных от LTS для .NET и .NET Framework.
  • Модель в процессе: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций Azure.
  • Скрипт C#: используется в основном при создании функций C# в портал Azure.
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{
    var logger = context.GetLogger(nameof(RabbitMQFunction));

    logger.LogInformation(item);

    var message = $"Output message created at {DateTime.Now}";
    return message;
}

Следующая функция Java использует заметку @RabbitMQTrigger из типов Java RabbitMQ для описания конфигурации триггера очереди RabbitMQ. Функция извлекает сообщение, помещенное в очередь, и добавляет его в журналы.

@FunctionName("RabbitMQTriggerExample")
public void run(
    @RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
    final ExecutionContext context)
{
    context.getLogger().info("Java HTTP trigger processed a request." + input);
}

В примере ниже показаны привязка триггера RabbitMQ в файле function.json и функция JavaScript, которая ее использует. Функция считывает и записывает сообщение RabbitMQ в журнал.

Данные привязки в файле function.json:

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Ниже показан код сценария JavaScript.

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

В примере ниже показано, как прочитать сообщение очереди RabbitMQ через триггер.

Привязка RabbitMQ определяется в файле function.json, в котором для параметра type задано значение RabbitMQTrigger.

{​​
    "scriptFile": "__init__.py",
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​
import logging
import azure.functions as func

def main(myQueueItem) -> None:
    logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)

Примеры PowerShell в настоящее время недоступны.

Атрибуты

Как изолированный рабочий процесс , так и библиотеки C# , используемые RabbitMQTriggerAttribute для определения функции, где определенные свойства атрибута зависят от версии расширения.

Конструктор атрибута принимает следующие параметры:

Параметр Описание
Имя очереди Имя очереди, из которой нужно получать сообщения.
Имя хоста Этот параметр больше не поддерживается и игнорируется. Он будет удален в будущей версии.
ConnectionStringSetting Имя параметра приложения, содержащего строку подключения для сервера RabbitMQ. Этот параметр принимает только имя ключа параметра приложения, вы не можете напрямую задать строковое значение подключения. Дополнительные сведения см. в разделе "Подключения".
Настройка имени пользователя Этот параметр больше не поддерживается и игнорируется. Он будет удален в будущей версии.
Настройка пароля Этот параметр больше не поддерживается и игнорируется. Он будет удален в будущей версии.
порт. Возвращает или задает используемый порт. По умолчанию принимает значение 0, которое указывает на порт клиента RabbitMQ по умолчанию: 5672.

Заметки

Заметка RabbitMQTrigger позволяет создать функцию, которая выполняется при создании сообщения RabbitMQ.

Эта заметка поддерживает следующие параметры конфигурации:

Параметр Описание
queueName Имя очереди, из которой нужно получать сообщения.
connectionStringSetting Имя параметра приложения, содержащего строку подключения для сервера RabbitMQ. Этот параметр принимает только имя ключа параметра приложения, вы не можете напрямую задать строковое значение подключения. Дополнительные сведения см. в разделе "Подключения".
disableCertificateValidation Логическое значение, которое можно задать, true указывающее, что проверка сертификата должна быть отключена. Значение по умолчанию: false. Не рекомендуется для рабочей среды. Не применяется при отключении SSL.

Настройка

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.

Свойство в function.json Описание
тип Должен иметь значениеRabbitMQTrigger.
направление Должен иметь значениеin.
имя Имя переменной, представляющей очередь в коде функции.
queueName Имя очереди, из которой нужно получать сообщения.
connectionStringSetting Имя параметра приложения, содержащего строку подключения для сервера RabbitMQ. Этот параметр принимает только имя ключа параметра приложения, вы не можете напрямую задать строковое значение подключения. Дополнительные сведения см. в разделе "Подключения".
disableCertificateValidation Логическое значение, которое можно задать, true указывающее, что проверка сертификата должна быть отключена. Значение по умолчанию: false. Не рекомендуется для рабочей среды. Не применяется при отключении SSL.

Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.

Подробные примеры см. в разделе Примеры.

Использование

Тип параметра, поддерживаемый триггером RabbitMQ, зависит от используемой модальности C#.

Привязки RabbitMQ в настоящее время поддерживают только строковые и сериализуемые типы объектов при выполнении в изолированном процессе.

Сообщение очереди доступно через context.bindings.<NAME>, где <NAME> совпадает с именем, определенным в function.json. Если полезные данные представлены в виде JSON, значение десериализируется в объект.

Connections

Внимание

Привязка RabbitMQ не поддерживает проверку подлинности и управляемые удостоверения Microsoft Entra. Azure Key Vault можно использовать для централизованного управления строка подключения RabbitMQ. Дополнительные сведения см. в разделе "Управление подключениями".

Начиная с версии 2.x расширения, hostNameuserNameSettingи passwordSetting больше не поддерживаются для определения подключения к серверу RabbitMQ. Вместо этого необходимо использовать connectionStringSetting.

Свойство connectionStringSetting может принимать только имя пары "ключ-значение" в параметрах приложения. Невозможно напрямую задать строковое значение строки подключения в привязке.

Например, если вы установили connectionStringSettingrabbitMQConnection значение в определении привязки, приложение-функция должна иметь параметр приложения с именем rabbitMQConnection , возвращающим значение подключения, например amqp://myuser:***@contoso.rabbitmq.example.com:5672 или ссылку Azure Key Vault.

При локальном запуске необходимо также иметь значение ключа для connectionStringSetting определенного в файлеlocal.settings.json . В противном случае приложение не может подключиться к службе с локального компьютера и возникает ошибка.

Очереди недоставленных сообщений

Управлять очередями недоставленных сообщений и их обменом и настраивать их с помощью триггера RabbitMQ нельзя. Чтобы использовать очереди недоставленных сообщений, необходимо сначала настроить очередь, используемую триггером в RabbitMQ. См. документацию по RabbitMQ.

Настройка масштабирования среды выполнения

Чтобы триггер RabbitMQ можно было масштабировать на несколько экземпляров, необходимо включить параметр мониторинг масштаба среды выполнения.

На портале его можно найти в разделе Конфигурация>Параметры среды выполнения функции для приложения функции.

VNETToggle

В Azure CLI можно включить мониторинг масштабирования среды выполнения с помощью следующей команды:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Мониторинг конечной точки RabbitMQ

Для мониторинга очередей и обмена для определенной конечной точки RabbitMQ:

Связанная статья