Partilhar via


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 ConnectStringSettingo .
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 ConnectStringSettingo .
PasswordSetting Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%". Ignorado ao usar ConnectStringSettingo .
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 ConnectStringSettingo .
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 ConnectStringSettingo .
passwordSetting Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%". Ignorado ao usar ConnectStringSettingo .
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 connectStringSettingo .
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 connectStringSettingo .
passwordSetting Nome da configuração do aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%". Ignorado ao usar connectStringSettingo .
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.

VNETToggle

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.

Próximos passos