Delen via


Overzicht van RabbitMQ-trigger voor Azure Functions

Notitie

De RabbitMQ-bindingen worden alleen volledig ondersteund voor Premium- en Dedicated-abonnementen . Verbruik wordt niet ondersteund.

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

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. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de 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)

Kenmerken

Zowel in-process als geïsoleerde werkproces C#-bibliotheken gebruiken het kenmerk om de functie te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.

De constructor van het kenmerk gebruikt de volgende parameters:

Parameter Description
QueueName Naam van de wachtrij waaruit berichten moeten worden ontvangen.
HostNaam Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik ConnectStringSetting.
UserNameSetting Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%". Genegeerd bij gebruik ConnectStringSetting.
PasswordSetting Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%". Genegeerd bij gebruik ConnectStringSetting.
ConnectionStringSetting De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld ConnectionStringSetting: "rabbitMQConnection", hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "RabbitMQConnection" : "< ActualConnectionstring >".
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

Gebruik in C#-klassebibliotheken het kenmerk RabbitMQTrigger .

Hier volgt een RabbitMQTrigger kenmerk in een methodehandtekening voor een geïsoleerde werkprocesbibliotheek:

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{

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:

Parameter Description
queueName Naam van de wachtrij waaruit berichten moeten worden ontvangen.
hostName Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik ConnectStringSetting.
userNameSetting Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%". Genegeerd bij gebruik ConnectStringSetting.
passwordSetting Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%". Genegeerd bij gebruik ConnectStringSetting.
connectionStringSetting De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld ConnectionStringSetting: "rabbitMQConnection", hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "RabbitMQConnection" : "< ActualConnectionstring >".
port 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

Configuratie

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

function.json-eigenschap Beschrijving
type Moet worden ingesteld op RabbitMQTrigger.
direction Moet worden ingesteld op in.
name De naam van de variabele die de wachtrij in functiecode vertegenwoordigt.
queueName Naam van de wachtrij waaruit berichten moeten worden ontvangen.
hostName Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik connectStringSetting.
userNameSetting Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%". Genegeerd bij gebruik connectStringSetting.
passwordSetting Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%". Genegeerd bij gebruik connectStringSetting.
connectionStringSetting De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld connectionStringSetting: "rabbitMQConnection", hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "rabbitMQConnection" : "< ActualConnectionstring >".
port 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

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.

Zie het C# -voorbeeld voor een volledig voorbeeld.

Raadpleeg Java-aantekeningen.

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.

Raadpleeg het Python-voorbeeld.

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.

host.json-instellingen

In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json zijn van toepassing op alle functies in een exemplaar van een functie-app. Het onderstaande voorbeeld host.json bestand bevat alleen de instellingen voor versie 2.x+ voor deze binding. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps in versies 2.x en latere versies.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Eigenschappen Standaard Beschrijving
prefetchCount 30 Hiermee wordt het aantal berichten opgehaald of ingesteld dat de ontvanger van het bericht tegelijkertijd kan aanvragen en in de cache wordt opgeslagen.
queueName n.v.t. Naam van de wachtrij waaruit berichten moeten worden ontvangen.
connectionString n.v.t. De RabbitMQ-berichtenwachtrij verbindingsreeks. De verbindingsreeks wordt hier rechtstreeks opgegeven en niet via een app-instelling.
poort 0 (genegeerd als u connectionString gebruikt) Hiermee haalt u de gebruikte poort op of stelt u deze in. Standaard ingesteld op 0, wat verwijst naar de standaardpoortinstelling van rabbitmq-client: 5672.

Lokaal testen

Notitie

De connectionString heeft voorrang op 'hostName', 'userName' en 'password'. Als deze allemaal zijn ingesteld, overschrijft connectionString de andere twee.

Als u lokaal test zonder een verbindingsreeks, moet u de instelling 'hostName' en 'userName' en 'password' instellen, indien van toepassing in de sectie 'rabbitMQ' van host.json:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Eigenschappen Standaard Beschrijving
hostName n.v.t. (genegeerd als u connectionString gebruikt)
Hostnaam van de wachtrij (bijvoorbeeld: 10.26.45.210)
gebruikersnaam n.v.t. (genegeerd als u connectionString gebruikt)
Naam voor toegang tot de wachtrij
password n.v.t. (genegeerd als u connectionString gebruikt)
Wachtwoord voor toegang tot de wachtrij

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 CLI kunt u Bewaking van runtimeschaal inschakelen met behulp van de volgende opdracht:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Bewaking RabbitMQ-eindpunt

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

Volgende stappen