Delen via


Overzicht van RabbitMQ-trigger voor Azure Functions

Gebruik de RabbitMQ-trigger om te reageren op berichten uit een RabbitMQ-wachtrij.

Notitie

De RabbitMQ-bindingen worden alleen volledig ondersteund op Elastic Premium - en Dedicated-abonnementen (App Service ). Flex Consumption - en Consumption-abonnementen worden nog niet ondersteund.

RabbitMQ-bindingen worden niet ondersteund door de Azure Functions v1.x-runtime.

Zie het overzicht voor informatie over het instellen en configureren van details.

Opmerking

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Er is een geïsoleerd werkproces vereist om C#-functies te ondersteunen die worden uitgevoerd op langetermijnondersteuning (LTS) en niet-LTS-versies voor .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Azure Functions-runtime.
  • C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.
[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;
}

De volgende Java-functie gebruikt de @RabbitMQTrigger aantekening van de Java RabbitMQ-typen om de configuratie voor een RabbitMQ-wachtrijtrigger te beschrijven. De functie pakt het bericht in de wachtrij en voegt het toe aan de logboeken.

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

In het volgende voorbeeld ziet u een RabbitMQ-triggerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding. De functie leest en registreert een RabbitMQ-bericht.

Dit zijn de bindingsgegevens in het bestand function.json :

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Dit is de JavaScript-scriptcode:

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

In het volgende voorbeeld ziet u hoe u een RabbitMQ-wachtrijbericht leest via een trigger.

Een RabbitMQ-binding wordt gedefinieerd in function.json waar het type is ingesteld op 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)

PowerShell-voorbeelden zijn momenteel niet beschikbaar.

Kenmerken

Zowel geïsoleerde werkprocessen als in-proces C#-bibliotheken gebruiken RabbitMQTriggerAttribute om de functie te definiëren, waarbij specifieke eigenschappen van het kenmerk afhankelijk zijn van de extensieversie.

De constructor van het kenmerk accepteert deze parameters:

Kenmerk Beschrijving
QueueName- Naam van de wachtrij waaruit berichten moeten worden ontvangen.
HostNaam Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie.
ConnectionStringSetting De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie.
Gebruikersnaaminstelling Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie.
Wachtwoord instellen Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie.
Poort Hiermee haalt u de gebruikte poort op of stelt u deze in. De standaardwaarde is 0, wat verwijst naar de standaardpoortinstelling van de RabbitMQ-client.5672

Aantekeningen

Met de RabbitMQTrigger aantekening kunt u een functie maken die wordt uitgevoerd wanneer een RabbitMQ-bericht wordt gemaakt.

De aantekening ondersteunt de volgende configuratieopties:

Kenmerk Beschrijving
queueName Naam van de wachtrij waaruit berichten moeten worden ontvangen.
connectionStringSetting De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie.
disableCertificateValidation Booleaanse waarde die kan worden ingesteld om aan te true geven dat certificaatvalidatie moet worden uitgeschakeld. De standaardwaarde is false. Niet aanbevolen voor productie. Is niet van toepassing wanneer SSL is uitgeschakeld.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.

function.json-eigenschap Beschrijving
soort Moet worden ingesteld op RabbitMQTrigger.
richting Moet worden ingesteld op in.
naam De naam van de variabele die de wachtrij in functiecode vertegenwoordigt.
queueName Naam van de wachtrij waaruit berichten moeten worden ontvangen.
connectionStringSetting De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie.
disableCertificateValidation Booleaanse waarde die kan worden ingesteld om aan te true geven dat certificaatvalidatie moet worden uitgeschakeld. De standaardwaarde is false. Niet aanbevolen voor productie. Is niet van toepassing wanneer SSL is uitgeschakeld.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

Het parametertype dat wordt ondersteund door de RabbitMQ-trigger, is afhankelijk van de gebruikte C#-modaliteit.

De RabbitMQ-bindingen ondersteunen momenteel alleen tekenreeks- en serialiseerbare objecttypen wanneer ze worden uitgevoerd in een geïsoleerd proces.

Het wachtrijbericht is beschikbaar via context.bindings.<NAME> de locatie die <NAME> overeenkomt met de naam die is gedefinieerd in function.json. Als de nettolading JSON is, wordt de waarde gedeserialiseerd in een object.

Connections

Belangrijk

De RabbitMQ-binding biedt geen ondersteuning voor Microsoft Entra-verificatie en beheerde identiteiten. U kunt Azure Key Vault gebruiken om uw RabbitMQ-verbindingsreeks s centraal te beheren. Zie Verbindingen beheren voor meer informatie.

Vanaf versie 2.x van de extensie, hostNameen userNameSettingworden ze passwordSetting niet meer ondersteund om een verbinding met de RabbitMQ-server te definiëren. U moet in plaats daarvan gebruiken connectionStringSetting.

De connectionStringSetting eigenschap kan alleen de naam van een sleutel-waardepaar accepteren in app-instellingen. U kunt een verbindingsreekswaarde niet rechtstreeks instellen in de binding.

Als u bijvoorbeeld hebt ingesteld connectionStringSettingrabbitMQConnection op de bindingsdefinitie, moet uw functie-app een app-instelling hebben met de naam die een verbindingswaarde retourneert rabbitMQConnection , zoals amqp://myuser:***@contoso.rabbitmq.example.com:5672 een Azure Key Vault-verwijzing.

Wanneer u lokaal werkt, moet u ook de sleutelwaarde hebben die connectionStringSetting moet worden gedefinieerd in uw local.settings.json-bestand . Anders kan uw app geen verbinding maken met de service vanaf uw lokale computer en treedt er een fout op.

Wachtrijen met dode letters

Wachtrijen en uitwisselingen van dode brieven kunnen niet worden beheerd of geconfigureerd vanuit de RabbitMQ-trigger. Als u wachtrijen met dode letters wilt gebruiken, configureert u de wachtrij die wordt gebruikt door de trigger in RabbitMQ. Raadpleeg de RabbitMQ-documentatie.

Runtime schalen inschakelen

Om de RabbitMQ-trigger uit te schalen naar meerdere exemplaren, moet de instelling runtimeschaalbewaking zijn ingeschakeld.

Deze instelling vindt u in de portal onder Runtime-instellingen van de configuratiefunctie>voor uw functie-app.

VNETToggle

In de Azure CLI kunt u Bewaking van runtimeschaal inschakelen met behulp van deze opdracht:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Een RabbitMQ-eindpunt bewaken

Uw wachtrijen en uitwisselingen voor een bepaald RabbitMQ-eindpunt bewaken:

Gerelateerd artikel