Partilhar via


Visão geral do gatilho RabbitMQ para Azure Functions

Use o gatilho RabbitMQ para responder a mensagens de uma fila RabbitMQ.

Nota

As associações RabbitMQ só são totalmente suportadas nos planos Elastic Premium e Dedicated (App Service). Os planos Flex Consumption e Consumption ainda não são suportados.

As associações RabbitMQ não são suportadas pelo tempo de execução do Azure Functions v1.x.

Para obter informações sobre detalhes de instalação e configuração, consulte a visão geral.

Exemplo

Você pode criar uma função C# 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. Um processo de trabalho isolado é necessário para dar suporte a funções C# executadas em versões LTS (long-term support) e não-LTS para .NET e .NET Framework.
  • Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Azure 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)

Os exemplos do PowerShell não estão disponíveis no momento.

Atributos

O processo de trabalho isolado e as bibliotecas C# em processo são usados RabbitMQTriggerAttribute para definir a função, onde as propriedades específicas do atributo dependem da versão da extensão.

O construtor do atributo aceita estes parâmetros:

Parâmetro Descrição
Nome da fila Nome da fila a partir da qual receber mensagens.
Nome do host Este parâmetro não é mais suportado e é ignorado. Ele será removido em uma versão futura.
ConnectionStringSetting O nome da configuração do aplicativo que contém a cadeia de conexão para seu servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração de aplicativo, você não pode definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões.
UserNameSetting Este parâmetro não é mais suportado e é ignorado. Ele será removido em uma versão futura.
PasswordSetting Este parâmetro não é mais suportado e é ignorado. Ele será removido em uma versão futura.
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.

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 Descrição
queueName Nome da fila a partir da qual receber mensagens.
connectionStringSetting O nome da configuração do aplicativo que contém a cadeia de conexão para seu servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração de aplicativo, você não pode definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões.
disableCertificateValidation Valor booleano que pode ser definido como indicando que a true validação do certificado deve ser desabilitada. O valor predefinido é false. Não recomendado para produção. Não se aplica quando o SSL está desativado.

Configuração

A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json .

function.json propriedade Descrição
tipo 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.
connectionStringSetting O nome da configuração do aplicativo que contém a cadeia de conexão para seu servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração de aplicativo, você não pode definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões.
disableCertificateValidation Valor booleano que pode ser definido como indicando que a true validação do certificado deve ser desabilitada. O valor predefinido é false. Não recomendado para produção. Não se aplica quando o SSL está desativado.

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.

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.

Connections

Importante

A associação RabbitMQ não suporta autenticação Microsoft Entra e identidades gerenciadas. Você pode usar o Azure Key Vault para gerenciar centralmente suas cadeias de conexão RabbitMQ. Para saber mais, consulte Gerenciar conexões.

A partir da versão 2.x da extensão, hostName, userNameSetting, e passwordSetting não são mais suportados para definir uma conexão com o servidor RabbitMQ. Em vez disso, você deve usar connectionStringSetting.

A connectionStringSetting propriedade só pode aceitar o nome de um par chave-valor nas configurações do aplicativo. Não é possível definir diretamente um valor de cadeia de conexão na associação.

Por exemplo, quando você tiver definido connectionStringSetting como em rabbitMQConnection sua definição de associação, seu aplicativo de função deve ter uma configuração de aplicativo nomeada rabbitMQConnection que retorna um valor de conexão como amqp://myuser:***@contoso.rabbitmq.example.com:5672 ou uma referência do Cofre da Chave do Azure.

Ao executar localmente, você também deve ter o valor da chave para connectionStringSetting definido em seu arquivo delocal.settings.json . Caso contrário, seu aplicativo não poderá se conectar ao serviço a partir do computador local e ocorrerá um erro.

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.

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 do Azure, você pode habilitar o Monitoramento de Escala de Tempo de Execução usando este comando:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Monitorando um endpoint RabbitMQ

Para monitorar suas filas e trocas para um determinado endpoint RabbitMQ:

  • Habilite o plug-in de gerenciamento RabbitMQ
  • Navegue e http://{node-hostname}:15672 inicie sessão com o seu nome de utilizador e palavra-passe.

Artigo relacionado