Visão geral do gatilho RabbitMQ para Azure Functions
Nota
As ligações RabbitMQ só são totalmente suportadas nos planos Premium e Dedicado . O consumo não é suportado.
Use o gatilho RabbitMQ para responder a mensagens de uma fila RabbitMQ.
Para obter informações sobre detalhes de instalação e configuração, consulte a visão geral.
Exemplo
Uma função C# pode ser criada usando um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. O processo de trabalho isolado é necessário para suportar funções C# em execução nas versões LTS e não-LTS .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Functions.
- Script C#: usado principalmente quando você cria funções C# no portal do Azure.
Importante
O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.
[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;
}
A função Java a seguir usa a @RabbitMQTrigger
anotação dos tipos Java RabbitMQ para descrever a configuração de um gatilho de fila RabbitMQ. A função pega a mensagem colocada na fila e a adiciona aos logs.
@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);
}
O exemplo a seguir mostra uma ligação de gatilho RabbitMQ em um arquivo function.json e uma função JavaScript que usa a ligação. A função lê e registra uma mensagem RabbitMQ.
Aqui estão os dados de ligação no arquivo function.json :
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Aqui está o código de script JavaScript:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
O exemplo a seguir demonstra como ler uma mensagem de fila RabbitMQ por meio de um gatilho.
Uma ligação RabbitMQ é definida em function.json onde type é definido como 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)
Atributos
As bibliotecas C# de processo de trabalho em processo e isoladas usam o atributo para definir a função. Em vez disso, o script C# usa um arquivo de configuração function.json.
O construtor do atributo usa os seguintes parâmetros:
Parâmetro | Description |
---|---|
Nome da fila | Nome da fila a partir da qual receber mensagens. |
Nome do host | Nome do host da fila, como 10.26.45.210. Ignorado ao usar ConnectStringSetting o . |
UserNameSetting | Nome da configuração do aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting o . |
PasswordSetting | Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting o . |
ConnectionStringSetting | O nome da configuração do aplicativo que contém a cadeia de conexão da fila de mensagens RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente, em vez disso, por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" o , tanto no local.settings.json quanto no seu aplicativo de função, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
Porta | Obtém ou define a porta usada. O padrão é 0, o que aponta para a configuração de porta padrão do cliente RabbitMQ de 5672 . |
Em bibliotecas de classe C#, use o atributo RabbitMQTrigger .
Aqui está um RabbitMQTrigger
atributo em uma assinatura de método para uma biblioteca de processos de trabalho isolada:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Anotações
A RabbitMQTrigger
anotação permite que você crie uma função que é executada quando uma mensagem RabbitMQ é criada.
A anotação suporta as seguintes opções de configuração:
Parâmetro | Description |
---|---|
queueName | Nome da fila a partir da qual receber mensagens. |
Nome do host | Nome do host da fila, como 10.26.45.210. Ignorado ao usar ConnectStringSetting o . |
userNameSetting | Nome da configuração do aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting o . |
passwordSetting | Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting o . |
connectionStringSetting | O nome da configuração do aplicativo que contém a cadeia de conexão da fila de mensagens RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente, em vez disso, por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" o , tanto no local.settings.json quanto no seu aplicativo de função, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Obtém ou define a porta usada. O padrão é 0, o que aponta para a configuração de porta padrão do cliente RabbitMQ de 5672 . |
Configuração
A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json .
function.json propriedade | Description |
---|---|
type | Deve ser definido como RabbitMQTrigger . |
direção | Deve ser definido como in . |
Designação | O nome da variável que representa a fila no código da função. |
queueName | Nome da fila a partir da qual receber mensagens. |
Nome do host | Nome do host da fila, como 10.26.45.210. Ignorado ao usar connectStringSetting o . |
userNameSetting | Nome da configuração do aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar connectStringSetting o . |
passwordSetting | Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar connectStringSetting o . |
connectionStringSetting | O nome da configuração do aplicativo que contém a cadeia de conexão da fila de mensagens RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente, em vez disso, por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido connectionStringSetting: "rabbitMQConnection" o , tanto no local.settings.json quanto no seu aplicativo de função, você precisará de uma configuração como "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Obtém ou define a porta usada. O padrão é 0, o que aponta para a configuração de porta padrão do cliente RabbitMQ de 5672 . |
Quando estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na Values
coleção.
Consulte a seção Exemplo para obter exemplos completos.
Utilização
O tipo de parâmetro suportado pelo gatilho RabbitMQ depende da modalidade C# usada.
As associações RabbitMQ atualmente suportam apenas tipos de string e objeto serializável quando executados em um processo isolado.
Para obter um exemplo completo, consulte Exemplo de C#.
Consulte as anotações Java.
A mensagem de fila está disponível através context.bindings.<NAME>
de onde <NAME>
corresponde ao nome definido em function.json. Se a carga for JSON, o valor será desserializado em um objeto.
Consulte o exemplo do Python.
Filas de letra morta
Filas de letra morta e trocas não podem ser controladas ou configuradas a partir do gatilho RabbitMQ. Para usar filas de letra morta, pré-configure a fila usada pelo gatilho no RabbitMQ. Consulte a documentação do RabbitMQ.
host.json configurações
Esta seção descreve as definições de configuração disponíveis para essa associação nas versões 2.x e superiores. As configurações no arquivo host.json se aplicam a todas as funções em uma instância de aplicativo de função. O exemplo host.json arquivo abaixo contém apenas as configurações da versão 2.x+ para essa ligação. Para obter mais informações sobre definições de configuração de aplicativo de função nas versões 2.x e versões posteriores, consulte host.json referência para o Azure Functions.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Property | Predefinição | Description |
---|---|---|
pré-fetchCount | 30 | Obtém ou define o número de mensagens que o destinatário da mensagem pode solicitar simultaneamente e é armazenado em cache. |
queueName | n/d | Nome da fila de onde receber mensagens. |
connectionString | n/d | A cadeia de conexão da fila de mensagens RabbitMQ. A cadeia de conexão é especificada diretamente aqui e não por meio de uma configuração de aplicativo. |
porta | 0 | (ignorado se estiver usando connectionString) Obtém ou define a porta usada. O padrão é 0, o que aponta para a configuração de porta padrão do cliente rabbitmq: 5672. |
Testes locais
Nota
O connectionString tem precedência sobre "hostName", "userName" e "password". Se todos eles estiverem definidos, o connectionString substituirá os outros dois.
Se você estiver testando localmente sem uma cadeia de conexão, você deve definir a configuração "hostName" e "userName" e "password", se aplicável, na seção "rabbitMQ" do host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Property | Predefinição | Description |
---|---|---|
Nome do host | n/d | (ignorado se estiver usando connectionString) Nome do host da fila (Ex: 10.26.45.210) |
nome de utilizador | n/d | (ignorado se estiver usando connectionString) Nome para acessar a fila |
password | n/d | (ignorado se estiver usando connectionString) Senha para acessar a fila |
Habilitar o Runtime Scaling
Para que o gatilho RabbitMQ seja dimensionado para várias instâncias, a configuração Runtime Scale Monitoring deve ser habilitada.
No portal, essa configuração pode ser encontrada em Configurações>de tempo de execução da função de configuração para seu aplicativo de função.
Na CLI, você pode habilitar o Monitoramento de Escala de Tempo de Execução usando o seguinte comando:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
Monitoramento do endpoint RabbitMQ
Para monitorar suas filas e trocas para um determinado endpoint RabbitMQ:
- Habilite o plug-in de gerenciamento RabbitMQ
- Navegue até http://{node-hostname}:15672 e inicie sessão com o seu nome de utilizador e palavra-passe.