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 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.
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}:15672inicie sessão com o seu nome de utilizador e palavra-passe.