Overzicht van RabbitMQ-uitvoerbinding voor Azure Functions

Notitie

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

Gebruik de RabbitMQ-uitvoerbinding om berichten te verzenden naar 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 @RabbitMQOutput aantekening van de Java RabbitMQ-typen om de configuratie voor een RabbitMQ-uitvoerbinding te beschrijven. De functie verzendt elke 5 minuten een bericht naar de RabbitMQ-wachtrij wanneer deze wordt geactiveerd door een TimerTrigger.

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

In het volgende voorbeeld ziet u een RabbitMQ-uitvoerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding. De functie leest in het bericht van een HTTP-trigger en voert het uit naar de RabbitMQ-wachtrij.

Dit zijn de bindingsgegevens in het bestand function.json :

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Dit is JavaScript-code:

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

In het volgende voorbeeld ziet u een RabbitMQ-uitvoerbinding in een function.json-bestand en een Python-functie die gebruikmaakt van de binding. De functie leest in het bericht van een HTTP-trigger en voert het uit naar de RabbitMQ-wachtrij.

Dit zijn de bindingsgegevens in het bestand 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"
        }
    ]
}

In _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'

Kenmerken

Zowel in-processals 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.
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.
Verbinding maken ionStringSetting 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 RabbitMQOutput aantekening kunt u een functie maken die wordt uitgevoerd wanneer een RabbitMQ-bericht wordt gemaakt.

De aantekening ondersteunt de volgende configuratie-instellingen:

Instelling Beschrijving
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

Zie het voorbeeld van uitvoerbinding voor meer details.

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 RabbitMQ.
direction Moet worden ingesteld op out.
name De naam van de variabele die de wachtrij in functiecode vertegenwoordigt.
queueName De naam van de wachtrij waar berichten naartoe moeten worden verzonden.
Hostname Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik connectStringSetting.
userName Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "< UserNameFrom Instellingen >". Genegeerd bij gebruik connectStringSetting.
password Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals UserNameSetting: "<UserNameFrom Instellingen >". 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 in plaats van via een app-instelling in local.settings.json. Als u deze bijvoorbeeld hebt ingesteld connectionStringSetting: "rabbitMQConnection" in zowel de local.settings.json als in uw functie-app, hebt u 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 runtimeversie van Functions, de versie van het extensiepakket en de gebruikte C#-modaliteit.

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

Zie het C# -voorbeeld voor een volledig voorbeeld.

Gebruik de volgende parametertypen voor de uitvoerbinding:

  • byte[] - Als de parameterwaarde null is wanneer de functie wordt afgesloten, wordt er geen bericht gemaakt.
  • string - Als de parameterwaarde null is wanneer de functie wordt afgesloten, wordt er geen bericht gemaakt.
  • POJO - Als de parameterwaarde niet is opgemaakt als een Java-object, wordt er een fout ontvangen.

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.

Volgende stappen