Visão geral do gatilho RabbitMQ para o Azure Functions
Observação
Só há suporte completo para as associações do RabbitMQ nos planos Premium e Dedicado. Não há suporte no plano Consumo.
Use o gatilho RabbitMQ para responder às mensagens de uma fila do RabbitMQ.
Para obter informações sobre a instalação e detalhes de configuração, confira a visão geral.
Exemplo
A função C# pode ser criada por meio de um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework.
- Modelo em processo: função C# compilada no mesmo processo que o runtime do Functions.
- Script C#: usado principalmente ao criar funções C# no portal do Azure.
Importante
O suporte terminará para o modelo em processo em 10 de novembro de 2026. É altamente recomendável migrar seus aplicativos para o modelo de trabalho isolado para obter suporte completo.
[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 anotação @RabbitMQTrigger
dos @RabbitMQTrigger
para descrever a configuração para um gatilho de fila do RabbitMQ. A função captura 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 associação do gatilho RabbitMQ em um arquivo function.json e a função JavaScript que usa a associação. A função lê e registra uma mensagem RabbitMQ.
Aqui estão os dados de associação no arquivo function.json:
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Este é o código do script do 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 da fila do RabbitMQ por meio de um gatilho.
Uma associação do RabbitMQ é definida em function.json, onde tipo é 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# em processo e de processo de trabalho isolado 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 recebe os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
QueueName | O nome da fila da qual receber mensagens. |
HostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar ConnectStringSetting . |
UserNameSetting | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
PasswordSetting | Nome da configuração de aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
ConnectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
Porta | Obtém ou define a porta utilizada. O padrão é 0, que aponta para a configuração de porta padrão do cliente RabbitMQ de 5672 . |
Em bibliotecas de classes de C#, utilize o atributo RabbitMQTrigger.
Aqui está um atributo RabbitMQTrigger
em uma assinatura de método para uma biblioteca isolada em processo de trabalho:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Anotações
A anotação RabbitMQTrigger
permite que você crie uma função que é executada quando uma mensagem do RabbitMQ é criada.
A anotação dá suporte às seguintes opções de configuração:
Parâmetro | Descrição |
---|---|
queueName | O nome da fila da qual receber mensagens. |
hostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar ConnectStringSetting . |
userNameSetting | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
passwordSetting | Nome da configuração de aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
connectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Obtém ou define a porta utilizada. O padrão é 0, 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 que você define no arquivo function.json.
Propriedade function.json | Descrição |
---|---|
tipo | Deve ser definido como RabbitMQTrigger . |
direction | Deve ser definido como in . |
name | O nome da variável que representa a fila no código de função. |
queueName | O nome da fila da qual receber mensagens. |
hostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar connectStringSetting . |
userNameSetting | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar connectStringSetting . |
passwordSetting | Nome da configuração de aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar connectStringSetting . |
connectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido connectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Obtém ou define a porta utilizada. O padrão é 0, que aponta para a configuração de porta padrão do cliente RabbitMQ de 5672 . |
Quando você estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na coleção Values
.
Consulte a Seção de exemplo para obter exemplos completos.
Uso
O tipo de parâmetro compatível com o gatilho RabbitMQ depende da modalidade C# usada.
Atualmente, as vinculações RabbitMQ são compatíveis apenas com tipos de objeto serializáveis e de cadeia de caracteres ao executar em um processo isolado.
Para obter um exemplo completo, confira o exemplo em C#.
Consulte anotações de Java.
A mensagem da fila está disponível por meio de context.bindings.<NAME>
, em que <NAME>
corresponde ao nome definido em function.json. Se o conteúdo for JSON, o valor será desserializado em um objeto.
Veja o exemplo do Python.
Filas de mensagens mortas
As filas e as trocas de mensagens mortas não podem ser controladas ou configuradas no gatilho RabbitMQ. Para usar filas de mensagens mortas, pré-configure a fila usada pelo gatilho em RabbitMQ. Consulte a documentação RabbitMQ.
configurações de host.json
Esta seção descreve as definições de configuração disponíveis para a 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 do aplicativo de funções. O arquivo host.json de exemplo abaixo contém apenas as configurações das versões 2.x e superiores para a associação. Para saber mais sobre as definições de configuração do aplicativo de funções nas versões 2.x e superiores, confira a referência de host.json para o Azure Functions.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Propriedade | Padrão | Descrição |
---|---|---|
prefetchCount | 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 | O nome da fila da qual 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 ConnectionStringSetting estiver sendo usado) Obtém ou define a porta usada. Usa 0 como padrão, que aponta para a configuração de porta padrão do cliente RabbitMQ: 5672. |
Teste local
Observação
O connectionString tem precedência sobre "hostName", "userName" e "password". Se todos estiverem definidos, o connectionString substituirá os outros dois.
Se você estiver testando localmente sem uma cadeia de conexão, defina a configuração "hostName" e "userName" e "password" se aplicável na seção "rabbitMQ" de host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Propriedade | Padrão | Descrição |
---|---|---|
hostName | N/D | (ignorado se estiver usando connectionString) Nome do host da fila (por exemplo: 10.26.45.210) |
userName | 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 dimensionamento de tempo de execução
Para que o gatilho RabbitMQ escale várias instâncias, a configuração de monitoramento de escala de tempo de execução deve ser habilitada.
No portal, essa configuração pode ser encontrada em Configuração>Configurações de tempo de execução da função para o aplicativo de funções.
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
Monitorando o ponto de extremidade RabbitMQ
Para monitorar as filas e trocas para um determinado ponto de extremidade RabbitMQ:
- Habilite o plug-in de gerenciamento do RabbitMQ
- Navegue até http://{node-hostname}:15672 e entre com seu nome de usuário e senha.