Přehled výstupní vazby RabbitMQ pro Azure Functions

Poznámka:

Vazby RabbitMQ jsou plně podporovány pouze v plánech Premium a Dedicated . Spotřeba se nepodporuje.

Výstupní vazba RabbitMQ slouží k odesílání zpráv do fronty RabbitMQ.

Informace o nastavení a konfiguraci najdete v přehledu.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions.
  • Skript jazyka C#: Používá se především při vytváření funkcí jazyka C# na webu 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;
}

Následující funkce Java používá poznámku @RabbitMQOutput z typů Java RabbitMQ k popisu konfigurace pro výstupní vazbu fronty RabbitMQ. Funkce odešle zprávu do fronty RabbitMQ při aktivaci časovačem TimerTrigger každých 5 minut.

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

Následující příklad ukazuje výstupní vazbu RabbitMQ v souboru function.json a funkci JavaScriptu, která používá vazbu. Funkce přečte zprávu z triggeru HTTP a vypíše ji do fronty RabbitMQ.

Tady jsou data vazby v souboru function.json :

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

Tady je javascriptový kód:

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

Následující příklad ukazuje výstupní vazbu RabbitMQ v souboru function.json a funkci Pythonu, která používá vazbu. Funkce přečte zprávu z triggeru HTTP a vypíše ji do fronty RabbitMQ.

Tady jsou data vazby v souboru 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"
        }
    ]
}

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

Atributy

Knihovny C# v procesu i izolovaného pracovního procesu používají atribut k definování funkce. Skript jazyka C# místo toho používá konfigurační soubor function.json.

Konstruktor atributu přebírá následující parametry:

Parametr Popis
QueueName Název fronty, ze které se mají přijímat zprávy.
Hostname Název hostitele fronty, například 10.26.45.210. Ignorováno při použití ConnectStringSetting.
UserNameSetting Název nastavení aplikace, které obsahuje uživatelské jméno pro přístup k frontě, například UserNameSetting: "%< UserNameFromSettings >%". Ignorováno při použití ConnectStringSetting.
Resetování hesla Název nastavení aplikace, které obsahuje heslo pro přístup k frontě, například PasswordSetting: "%< PasswordFromSettings >%". Ignorováno při použití ConnectStringSetting.
Připojení ionStringSetting Název nastavení aplikace obsahující frontu zpráv RabbitMQ připojovací řetězec. Trigger nebude fungovat, když zadáte připojovací řetězec přímo prostřednictvím nastavení aplikace. Pokud jste například nastavili ConnectionStringSetting: "rabbitMQConnection", pak v local.settings.json i v aplikaci funkcí potřebujete nastavení, jako "RabbitMQConnection" : "< ActualConnectionstring >"je .
Port Získá nebo nastaví použitý port. Výchozí hodnota je 0, která odkazuje na výchozí nastavení 5672portu klienta RabbitMQ .

V knihovnách tříd jazyka C# použijte atribut RabbitMQTrigger .

Tady je RabbitMQTrigger atribut v podpisu metody pro knihovnu izolovaných pracovních procesů:

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

Poznámky

Poznámka RabbitMQOutput umožňuje vytvořit funkci, která se spustí při vytvoření zprávy RabbitMQ.

Poznámka podporuje následující nastavení konfigurace:

Nastavení Popis
queueName Název fronty, ze které se mají přijímat zprávy.
Hostname Název hostitele fronty, například 10.26.45.210. Ignorováno při použití ConnectStringSetting.
userNameSetting Název nastavení aplikace, které obsahuje uživatelské jméno pro přístup k frontě, například UserNameSetting: "%< UserNameFromSettings >%". Ignorováno při použití ConnectStringSetting.
resetování hesla Název nastavení aplikace, které obsahuje heslo pro přístup k frontě, například PasswordSetting: "%< PasswordFromSettings >%". Ignorováno při použití ConnectStringSetting.
connectionStringSetting Název nastavení aplikace obsahující frontu zpráv RabbitMQ připojovací řetězec. Trigger nebude fungovat, když zadáte připojovací řetězec přímo prostřednictvím nastavení aplikace. Pokud jste například nastavili ConnectionStringSetting: "rabbitMQConnection", pak v local.settings.json i v aplikaci funkcí potřebujete nastavení, jako "RabbitMQConnection" : "< ActualConnectionstring >"je .
port Získá nebo nastaví použitý port. Výchozí hodnota je 0, která odkazuje na výchozí nastavení 5672portu klienta RabbitMQ .

Další podrobnosti najdete v příkladu výstupní vazby.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .

vlastnost function.json Popis
type Musí být nastavena na RabbitMQhodnotu .
direction Musí být nastavena na outhodnotu .
Jméno Název proměnné, která představuje frontu v kódu funkce.
queueName Název fronty pro odesílání zpráv.
Hostname Název hostitele fronty, například 10.26.45.210. Ignorováno při použití connectStringSetting.
Username Název nastavení aplikace, které obsahuje uživatelské jméno pro přístup k frontě, například UserNameSetting: "< UserNameFrom Nastavení >". Ignorováno při použití connectStringSetting.
Heslo Název nastavení aplikace, které obsahuje heslo pro přístup k frontě, například UserNameSetting: "< UserNameFrom Nastavení >". Ignorováno při použití connectStringSetting.
connectionStringSetting Název nastavení aplikace obsahující frontu zpráv RabbitMQ připojovací řetězec. Trigger nebude fungovat, když zadáte připojovací řetězec přímo místo nastavení aplikace v local.settings.jsonsouboru . Pokud jste například nastavili connectionStringSetting: "rabbitMQConnection"local.settings.json i v aplikaci funkcí, potřebujete nastavení jako "rabbitMQConnection" : "< ActualConnectionstring >".
port Získá nebo nastaví použitý port. Výchozí hodnota je 0, která odkazuje na výchozí nastavení 5672portu klienta RabbitMQ .

Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values .

Kompletní příklady najdete v části Příklad.

Využití

Typ parametru podporovaný triggerem RabbitMQ závisí na verzi modulu runtime functions, verzi balíčku rozšíření a použitém způsobu použití jazyka C#.

Vazby RabbitMQ v současné době podporují pouze řetězcové a serializovatelné typy objektů při spuštění v izolovaném pracovním procesu.

Úplný příklad najdete v příkladu jazyka C#.

Pro výstupní vazbu použijte následující typy parametrů:

  • byte[] – Pokud je hodnota parametru při ukončení funkce null, funkce nevytvoří zprávu.
  • string – Pokud je hodnota parametru při ukončení funkce null, funkce nevytvoří zprávu.
  • POJO – Pokud hodnota parametru není naformátovaná jako objekt Java, zobrazí se chyba.

Zpráva fronty je dostupná prostřednictvím context.bindings.<NAME> toho, kde <NAME> odpovídá názvu definovanému v function.json. Pokud datová část je JSON, hodnota se deserializuje do objektu.

Projděte si příklad Pythonu.

Další kroky