Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use a associação de saída do RabbitMQ para enviar mensagens a uma fila do RabbitMQ.
Observação
As associações do RabbitMQ só têm suporte total nos planos Elastic Premium e Dedicated (Serviço de Aplicativo). Os planos Flex Consumption e Consumption ainda não são compatíveis.
Não há suporte para associações do RabbitMQ no runtime do Azure Functions v1.x.
Para obter informações sobre a instalação e detalhes de configuração, confira 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 executada em um processo de trabalho que está isolado do runtime. Um processo de trabalho isolado é necessário para dar suporte a funções C# em execução em LTS (suporte de longo prazo) e versões não LTS para .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o runtime do Azure 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 @RabbitMQOutput dos @RabbitMQOutput para descrever a configuração de uma associação de saída da fila do RabbitMQ. A função envia uma mensagem para a fila do RabbitMQ quando disparada 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 associação de saída do RabbitMQ em um arquivo function.json e o código JavaScript que usa a associação. A função lê a mensagem de um gatilho HTTP e a gera na fila do RabbitMQ.
Aqui estão os dados de associaçã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"
}
]
}
Este é o código JavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
O exemplo a seguir mostra uma associação de saída do RabbitMQ em um arquivo function.json e uma função Python que usa a associação. A função lê a mensagem de um gatilho HTTP e a gera na fila do RabbitMQ.
Aqui estão os dados de associaçã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
Tanto o processo de trabalho isolado quanto as bibliotecas C# em processo usam um atributo para definir uma associação de saída que grava em uma fila RabbitMQ.
O RabbitMQOutputAttribute construtor aceita estes parâmetros:
| Parâmetro | Descrição |
|---|---|
| QueueName | O nome da fila da qual receber mensagens. |
| HostName | Esse parâmetro não tem mais suporte 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 do servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração do aplicativo, não é possível definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões. |
| UserNameSetting | Esse parâmetro não tem mais suporte e é ignorado. Ele será removido em uma versão futura. |
| PasswordSetting | Esse parâmetro não tem mais suporte e é ignorado. Ele será removido em uma versão futura. |
| 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. |
| DisableCertificateValidation | Obtém ou define um valor que indica se a validação do certificado deve ser desabilitada. Não recomendado para produção. Não se aplica quando o SSL está desabilitado. |
Anotações
A anotação RabbitMQOutput permite que você crie uma função que é executada quando uma mensagem do RabbitMQ é criada.
A anotação dá suporte às seguintes definições de configuração:
| Configuração | Descrição |
|---|---|
| queueName | O nome da fila da qual receber mensagens. |
| connectionStringSetting | O nome da configuração do aplicativo que contém a cadeia de conexão do servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração do aplicativo, não é possível definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões. |
| disableCertificateValidation | Obtém ou define um valor que indica se a validação do certificado deve ser desabilitada. Não recomendado para produção. Não se aplica quando o SSL está desabilitado. |
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 RabbitMQ. |
| direção | Deve ser definido como out. |
| nome | O nome da variável que representa a fila no código de função. |
| queueName | Nome da fila para a qual as mensagens serão enviadas. |
| connectionStringSetting | O nome da configuração do aplicativo que contém a cadeia de conexão do servidor RabbitMQ. Essa configuração usa apenas um nome de chave de configuração do aplicativo, não é possível definir diretamente um valor de cadeia de conexão. Para obter mais informações, consulte Conexões. |
| disableCertificateValidation | Obtém ou define um valor que indica se a validação do certificado deve ser desabilitada. Não recomendado para produção. Não se aplica quando o SSL está desabilitado. |
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
Os tipos específicos com suporte pelo gatilho RabbitMQ dependem da versão de runtime do Functions, da versão do pacote de extensão e da modalidade de 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 de trabalho isolado.
Use os seguintes tipos de parâmetro para a associação de saída:
-
byte[]– Se o valor de parâmetro não for nulo quando a função sair, o Functions não criará uma mensagem. -
string– Se o valor de parâmetro não for nulo quando a função sair, o 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 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.
Conexões
Importante
A associação RabbitMQ não dá suporte à autenticação e identidades gerenciadas do Microsoft Entra. Você pode usar o Azure Key Vault para gerenciar centralmente suas cadeias de conexão do RabbitMQ. Para saber mais, consulte Gerenciar conexões.
A partir da versão 2.x da extensão, hostNameuserNameSettingpasswordSetting não há mais suporte 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. Você não pode definir diretamente um valor de cadeia de conexão na associação.
Por exemplo, quando você definiu connectionStringSettingrabbitMQConnection como em sua definição de associação, seu aplicativo de funções 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 Azure Key Vault.
Ao executar localmente, você também deve ter o valor da chave para connectionStringSetting definido em seu arquivo local.settings.json . Caso contrário, seu aplicativo não poderá se conectar ao serviço do computador local e ocorrerá um erro.