Visão geral da associação de saída do RabbitMQ para o Azure Functions
Observação
Só há suporte completo para as associações do RabbitMQ nos planos Premium e Dedicado. Não há suporte no plano Consumo.
Use a associação de saída do RabbitMQ para enviar mensagens a uma fila do RabbitMQ.
Para obter informações sobre a instalação e detalhes de configuração, confira a visão geral.
Exemplo
A função C# pode ser criada por meio de um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework.
- Modelo em processo: função C# compilada no mesmo processo que o runtime do 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
As bibliotecas C# em processo e de processo de trabalho isolado 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 recebe os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
QueueName | O nome da fila da qual receber mensagens. |
HostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar ConnectStringSetting . |
UserNameSetting | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
PasswordSetting | Nome da configuração de aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
ConnectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
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 . |
Em bibliotecas de classes de C#, utilize o atributo RabbitMQTrigger.
Aqui está um atributo RabbitMQTrigger
em uma assinatura de método para uma biblioteca isolada em processo de trabalho:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
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. |
hostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar ConnectStringSetting . |
userNameSetting | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "%< UserNameFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
passwordSetting | Nome da configuração de aplicativo que contém a senha para acessar a fila, como PasswordSetting: "%< PasswordFromSettings >%" . Ignorado ao usar ConnectStringSetting . |
connectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente por meio de uma configuração de aplicativo. Por exemplo, quando você tiver definido ConnectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | 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 . |
Confira o exemplo de associação de saída para obter mais detalhes.
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 . |
direction | Deve ser definido como out . |
name | 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. |
hostName | Nome do host da fila, por exemplo, 10.26.45.210. Ignorado ao usar connectStringSetting . |
userName | Nome da configuração de aplicativo que contém o nome de usuário para acessar a fila, como UserNameSetting: "< UserNameFromSettings >". Ignorado ao usar connectStringSetting . |
password | Nome da configuração de aplicativo que contém a senha para acessar a fila, como UserNameSetting: "< UserNameFromSettings >". Ignorado ao usar connectStringSetting . |
connectionStringSetting | O nome da configuração de aplicativo que contém a cadeia de conexão da fila da mensagem do RabbitMQ. O gatilho não funcionará quando você especificar a cadeia de conexão diretamente, não por meio de uma configuração de aplicativo em local.settings.json . Por exemplo, quando você tiver definido connectionStringSetting: "rabbitMQConnection" , em seguida, no local.settings.json e no aplicativo de funções, você precisará de uma configuração como "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | 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 . |
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.
Para obter um exemplo completo, confira o exemplo em C#.
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.
Veja o exemplo do Python.