Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use a ligação de saída RabbitMQ para enviar mensagens para 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 @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
Tanto o processo de trabalho isolado quanto as bibliotecas C# em processo usam um atributo para definir uma ligação de saída que grava em uma fila RabbitMQ.
O RabbitMQOutputAttribute construtor 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. |
| 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á desativado. |
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. |
| 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 | 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á 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 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. |
| 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 | 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á 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 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.
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.
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.