Выходные привязки 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 использует заметку @RabbitMQOutput
из типов Java RabbitMQ для описания конфигурации выходной привязки очереди RabbitMQ. Эта функция отправляет сообщение в очередь RabbitMQ при активации TimerTrigger каждые 5 минут.
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
В следующем примере показаны выходная привязка RabbitMQ в файле function.json и функция JavaScript, которая использует эту привязку. Функция считывает сообщение из триггера HTTP и выводит его в очередь RabbitMQ.
Данные привязки в файле function.json:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Код JavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
В следующем примере показаны выходная привязка RabbitMQ в файле function.json и функция Python, которая ее использует. Функция считывает сообщение из триггера HTTP и выводит его в очередь RabbitMQ.
Данные привязки в файле function.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
В _init_.py:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
Атрибуты
Библиотеки 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)
{
Заметки
Заметка RabbitMQOutput
позволяет создать функцию, которая выполняется при создании сообщения RabbitMQ.
Эта заметка поддерживает следующие параметры конфигурации:
Параметр | Description |
---|---|
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 | Должен иметь значениеRabbitMQ . |
direction | Должен иметь значениеout . |
name | Имя переменной, представляющей очередь в коде функции. |
queueName | Имя очереди, в которую отправляются сообщения. |
Имя узла | Имя узла очереди, например 10.26.45.210. Игнорируется при использовании connectStringSetting . |
userName | Имя параметра приложения, содержащего имя пользователя для доступа к очереди, например UserNameSetting: "< UserNameFromSettings >". Игнорируется при использовании connectStringSetting . |
пароль | Имя параметра приложения, содержащего имя пользователя для доступа к очереди, например UserNameSetting: "< UserNameFromSettings >". Игнорируется при использовании connectStringSetting . |
connectionStringSetting | Имя параметра приложения, который содержит строку подключения очереди сообщений RabbitMQ. Триггер не будет работать при указании строки подключения напрямую, а не через параметр приложения local.settings.json . Например, если задано connectionStringSetting: "rabbitMQConnection" в файле local.settings.json и в приложении-функции, вам потребуется параметр, подобный "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Возвращает или задает используемый порт. По умолчанию принимает значение 0, которое указывает на порт клиента RabbitMQ по умолчанию: 5672 . |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.
Подробные примеры см. в разделе Примеры.
Использование
Тип параметра, поддерживаемый триггером RabbitMQ, зависит от версии среды выполнения Функций, версии пакета расширения и используемой модальности C#.
Привязки RabbitMQ в настоящее время поддерживают только строковые и сериализуемые типы объектов при выполнении в изолированном рабочем процессе.
Полный пример см. в разделе Пример C#.
Для выходной привязки можно использовать параметры следующих типов:
byte[]
Если при выходе из функции параметр имеет значение NULL, то служба "Функции" не создает сообщение.string
Если при выходе из функции параметр имеет значение NULL, то служба "Функции" не создает сообщение.POJO
. Если значение параметра не отформатировано как объект Java, возвращается ошибка.
Сообщение очереди доступно через context.bindings.<NAME>
, где <NAME>
совпадает с именем, определенным в function.json. Если полезные данные представлены в виде JSON, значение десериализируется в объект.
См. пример на Python.