Общие сведения о триггере RabbitMQ для службы "Функции Azure"
Примечание.
Полноценная поддержка привязок RabbitMQ доступна только для планов уровня "Премиум" и "Выделенный". В подписке с оплатой по мере использования поддержка не предоставляется.
Триггер RabbitMQ используется для реагирования на сообщения из очереди RabbitMQ.
Сведения об установке и настройке см. в обзорной статье.
Пример
Функцию C# можно создать с помощью одного из следующих режимов C#:
- Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в LTS и не LTS-версиях .NET и платформа .NET Framework.
- Модель внутрипроцессного процесса: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций.
- Скрипт C#: используется в основном при создании функций C# в портал Azure.
Внимание
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
[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)
Атрибуты
Библиотеки C# в процессе и изолированном рабочем процессе используют атрибут для определения функции. Вместо этого в скрипте C# используется файл конфигурации function.json.
Конструктор атрибута принимает следующие параметры:
Параметр | Описание |
---|---|
QueueName | Имя очереди, из которой нужно получать сообщения. |
HostName | Имя узла очереди, например 10.26.45.210. Игнорируется при использовании ConnectStringSetting . |
UserNameSetting | Имя параметра приложения, содержащего имя пользователя для доступа к очереди, например UserNameSetting: "%< UserNameFromSettings >%" . Игнорируется при использовании ConnectStringSetting . |
PasswordSetting | Имя параметра приложения, содержащего пароль для доступа к очереди, например PasswordSetting: "%< PasswordFromSettings >%" . Игнорируется при использовании ConnectStringSetting . |
ConnectionStringSetting | Имя параметра приложения, который содержит строку подключения очереди сообщений RabbitMQ. Триггер не будет работать при указании строки подключения напрямую с помощью параметра приложения. Например, если задано ConnectionStringSetting: "rabbitMQConnection" , в файле local.settings.json и в приложении-функции вам потребуется параметр, подобный "RabbitMQConnection" : "< ActualConnectionstring >" . |
порт. | Возвращает или задает используемый порт. По умолчанию принимает значение 0, которое указывает на порт клиента RabbitMQ по умолчанию: 5672 . |
В библиотеках классов C# используйте атрибут RabbitMQTrigger.
Ниже приведен RabbitMQTrigger
атрибут в сигнатуре метода для изолированной библиотеки рабочих процессов:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Заметки
Заметка RabbitMQTrigger
позволяет создать функцию, которая выполняется при создании сообщения RabbitMQ.
Эта заметка поддерживает следующие параметры конфигурации:
Параметр | Описание |
---|---|
queueName | Имя очереди, из которой нужно получать сообщения. |
Имя узла | Имя узла очереди, например 10.26.45.210. Игнорируется при использовании ConnectStringSetting . |
userNameSetting | Имя параметра приложения, содержащего имя пользователя для доступа к очереди, например UserNameSetting: "%< UserNameFromSettings >%" . Игнорируется при использовании ConnectStringSetting . |
passwordSetting | Имя параметра приложения, содержащего пароль для доступа к очереди, например PasswordSetting: "%< PasswordFromSettings >%" . Игнорируется при использовании ConnectStringSetting . |
connectionStringSetting | Имя параметра приложения, который содержит строку подключения очереди сообщений RabbitMQ. Триггер не будет работать при указании строки подключения напрямую с помощью параметра приложения. Например, если задано ConnectionStringSetting: "rabbitMQConnection" , в файле local.settings.json и в приложении-функции вам потребуется параметр, подобный "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Возвращает или задает используемый порт. По умолчанию принимает значение 0, которое указывает на порт клиента RabbitMQ по умолчанию: 5672 . |
Настройка
В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.
Свойство в function.json | Описание |
---|---|
type | Должен иметь значениеRabbitMQTrigger . |
direction | Должен иметь значениеin . |
name | Имя переменной, представляющей очередь в коде функции. |
queueName | Имя очереди, из которой нужно получать сообщения. |
Имя узла | Имя узла очереди, например 10.26.45.210. Игнорируется при использовании connectStringSetting . |
userNameSetting | Имя параметра приложения, содержащего имя пользователя для доступа к очереди, например UserNameSetting: "%< UserNameFromSettings >%" . Игнорируется при использовании connectStringSetting . |
passwordSetting | Имя параметра приложения, содержащего пароль для доступа к очереди, например PasswordSetting: "%< PasswordFromSettings >%" . Игнорируется при использовании connectStringSetting . |
connectionStringSetting | Имя параметра приложения, который содержит строку подключения очереди сообщений RabbitMQ. Триггер не будет работать при указании строки подключения напрямую с помощью параметра приложения. Например, если задано connectionStringSetting: "rabbitMQConnection" , в файле local.settings.json и в приложении-функции вам потребуется параметр, подобный "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Возвращает или задает используемый порт. По умолчанию принимает значение 0, которое указывает на порт клиента RabbitMQ по умолчанию: 5672 . |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.
Подробные примеры см. в разделе Примеры.
Использование
Тип параметра, поддерживаемый триггером RabbitMQ, зависит от используемой модальности C#.
Привязки RabbitMQ в настоящее время поддерживают только строковые и сериализуемые типы объектов при выполнении в изолированном процессе.
Полный пример см. в разделе Пример C#.
См. заметки для Java.
Сообщение очереди доступно через context.bindings.<NAME>
, где <NAME>
совпадает с именем, определенным в function.json. Если полезные данные представлены в виде JSON, значение десериализируется в объект.
См. пример на Python.
Очереди недоставленных сообщений
Управлять очередями недоставленных сообщений и их обменом и настраивать их с помощью триггера RabbitMQ нельзя. Чтобы использовать очереди недоставленных сообщений, необходимо сначала настроить очередь, используемую триггером в RabbitMQ. См. документацию по RabbitMQ.
Параметры файла host.json
В этом разделе описываются параметры конфигурации, доступные для этой привязки в версии 2.x или новее. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. В приведенном ниже примере файла host.json содержатся только параметры этой привязки для версии 2.x или новее. Дополнительные сведения о параметрах конфигурации приложения-функции в версии 2.x или более поздней см. в статье Справочник по файлу host.json для Функций Azure.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Свойство | По умолчанию | Description |
---|---|---|
prefetchCount | 30 | Возвращает или задает число сообщений, которое получатель сообщений может запросить одновременно и кэширует. |
queueName | Н/Д | Имя очереди, из которой нужно получать сообщения. |
connectionString | Н/Д | Строка подключения очереди сообщений RabbitMQ. Строка подключения указывается непосредственно здесь, а не с помощью параметра приложения. |
port | 0 | Возвращает или задает используемый порт (игнорируется при использовании параметра connectionString). По умолчанию принимает значение 0, которое указывает на порт клиента rabbitmq по умолчанию: 5672. |
Локальное тестирование
Примечание.
Строка подключения имеет приоритет над параметрами hostName, userName и password. Если все они заданы, то строка подключения их переопределяет.
В ходе локального тестирования без строки подключения параметры hostName, userName и password, если они применимы, задаются в разделе rabbitMQ файла host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Свойство | По умолчанию | Description |
---|---|---|
hostName | Н/Д | (игнорируется при использовании connectionString) Имя узла очереди (например, 10.26.45.210) |
userName | Н/Д | (игнорируется при использовании connectionString) Имя для доступа к очереди |
password | Н/Д | (игнорируется при использовании connectionString) Пароль для доступа к очереди |
Настройка масштабирования среды выполнения
Чтобы триггер RabbitMQ можно было масштабировать на несколько экземпляров, необходимо включить параметр мониторинг масштаба среды выполнения.
На портале его можно найти в разделе Конфигурация>Параметры среды выполнения функции для приложения функции.
В интерфейсе командной строки (CLI) мониторинг масштаба среды выполнения можно включить с помощью следующей команды:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
Мониторинг конечной точки RabbitMQ
Для мониторинга очередей и обмена для определенной конечной точки RabbitMQ:
- Включите подключаемый модуль управления RabbitMQ.
- Перейдите по адресу http://{имя_узла}:15672 и войдите в систему с именем пользователя и паролем.