Partilhar via


Visão geral da vinculação de saída 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 a ligação de saída RabbitMQ para enviar mensagens para 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 @RabbitMQOutput anotação dos tipos Java RabbitMQ para descrever a configuração de uma ligação de saída de fila RabbitMQ. A função envia uma mensagem para a fila RabbitMQ quando acionada por um TimerTrigger a cada 5 minutos.

@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");
}

O exemplo a seguir mostra uma ligação de saída RabbitMQ em um arquivo function.json e uma função JavaScript que usa a ligação. A função lê a mensagem de um gatilho HTTP e a envia para a fila RabbitMQ.

Aqui estão os dados de ligação no arquivo function.json :

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Aqui está o código JavaScript:

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

O exemplo a seguir mostra uma ligação de saída RabbitMQ em um arquivo function.json e uma função Python que usa a ligação. A função lê a mensagem de um gatilho HTTP e a envia para a fila RabbitMQ.

Aqui estão os dados de ligação no arquivo 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"
        }
    ]
}

Em _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'

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 RabbitMQOutput anotação permite que você crie uma função que é executada quando uma mensagem RabbitMQ é criada.

A anotação suporta as seguintes definições de configuração:

Definição Descriçã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.

Consulte o exemplo de vinculação de saída para obter mais detalhes.

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 RabbitMQ.
direção Deve ser definido como out.
Designação O nome da variável que representa a fila no código da função.
queueName Nome da fila para a qual enviar mensagens.
Nome do host Nome do host da fila, como 10.26.45.210. Ignorado ao usar connectStringSettingo .
nome de utilizador 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 .
palavra-passe Nome da configuração do aplicativo que contém a senha para acessar a fila, como UserNameSetting: "< UserNameFromSettings >". 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 de por meio de uma configuração de aplicativo no local.settings.json. Por exemplo, quando você tiver definido connectionStringSetting: "rabbitMQConnection" , tanto no local.settings.json quanto no seu aplicativo de função, 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 versão de tempo de execução do Functions, da versão do pacote de extensão e da modalidade C# usada.

As associações RabbitMQ atualmente suportam apenas tipos de string e objeto serializável quando executados em um processo de trabalho isolado.

Para obter um exemplo completo, consulte Exemplo de C#.

Use os seguintes tipos de parâmetros para a ligação de saída:

  • byte[] - Se o valor do parâmetro for nulo quando a função for encerrada, Functions não criará uma mensagem.
  • string - Se o valor do parâmetro for nulo quando a função for encerrada, Functions não criará uma mensagem.
  • POJO - Se o valor do parâmetro não estiver formatado como um objeto Java, um erro será recebido.

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.

Próximos passos