Sdílet prostřednictvím


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

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

Poznámka:

Vazby RabbitMQ jsou plně podporovány pouze v plánech Elastic Premium a Dedicated (App Service). Plány Flex Consumption a Consumption se zatím nepodporují.

Vazby RabbitMQ nejsou podporovány modulem runtime Azure Functions v1.x.

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

Příklad

Funkci jazyka C# můžete 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 se vyžaduje pro podporu funkcí jazyka C# běžících na dlouhodobé podpoře (LTS) a jiných verzích než LTS pro .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime Azure 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

Izolované pracovní procesy i knihovny jazyka C# v procesu používají atribut k definování výstupní vazby, která zapisuje do fronty RabbitMQ.

Konstruktor RabbitMQOutputAttribute přijímá tyto parametry:

Parametr Popis
QueueName Název fronty, ze které se mají přijímat zprávy.
Název hostitele Tento parametr se už nepodporuje a ignoruje se. Odebere se v budoucí verzi.
ConnectionStringSetting Název nastavení aplikace, které obsahuje připojovací řetězec pro váš server RabbitMQ. Toto nastavení přebírá jenom název klíče nastavení aplikace, ale nemůžete přímo nastavit hodnotu připojovacího řetězce. Další informace najdete v tématu Připojení.
Nastavení uživatelského jména Tento parametr se už nepodporuje a ignoruje se. Odebere se v budoucí verzi.
Resetování hesla Tento parametr se už nepodporuje a ignoruje se. Odebere se v budoucí verzi.
Přístav Získá nebo nastaví použitý port. Výchozí hodnota je 0, která odkazuje na výchozí nastavení 5672portu klienta RabbitMQ .
DisableCertificateValidation Získá nebo nastaví hodnotu označující, zda má být ověření certifikátu zakázáno. Nedoporučuje se pro produkční prostředí. Nevztahuje se, když je protokol SSL zakázaný.

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.
connectionStringSetting Název nastavení aplikace, které obsahuje připojovací řetězec pro váš server RabbitMQ. Toto nastavení přebírá jenom název klíče nastavení aplikace, ale nemůžete přímo nastavit hodnotu připojovacího řetězce. Další informace najdete v tématu Připojení.
disableCertificateValidation Získá nebo nastaví hodnotu označující, zda má být ověření certifikátu zakázáno. Nedoporučuje se pro produkční prostředí. Nevztahuje se, když je protokol SSL zakázaný.

Konfigurace

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

vlastnost function.json Popis
typ Musí být nastavena na RabbitMQhodnotu .
směr 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.
connectionStringSetting Název nastavení aplikace, které obsahuje připojovací řetězec pro váš server RabbitMQ. Toto nastavení přebírá jenom název klíče nastavení aplikace, ale nemůžete přímo nastavit hodnotu připojovacího řetězce. Další informace najdete v tématu Připojení.
disableCertificateValidation Získá nebo nastaví hodnotu označující, zda má být ověření certifikátu zakázáno. Nedoporučuje se pro produkční prostředí. Nevztahuje se, když je protokol SSL zakázaný.

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.

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.

Connections

Důležité

Vazba RabbitMQ nepodporuje ověřování Microsoft Entra a spravované identity. Azure Key Vault můžete použít k centrální správě připojovací řetězec RabbitMQ. Další informace najdete v tématu Správa připojení.

Počínaje verzí 2.x rozšíření hostName, userNameSettinga passwordSetting již nejsou podporovány k definování připojení k serveru RabbitMQ. Musíte místo toho použít connectionStringSetting.

Vlastnost connectionStringSetting může v nastavení aplikace přijmout pouze název páru klíč-hodnota. V vazbě nelze přímo nastavit hodnotu připojovacího řetězce.

Pokud jste například nastavili connectionStringSettingrabbitMQConnection definici vazby, musí mít vaše aplikace funkcí nastavení aplikace s názvem rabbitMQConnection , které vrací hodnotu připojení, jako je nebo amqp://myuser:***@contoso.rabbitmq.example.com:5672odkaz služby Azure Key Vault.

Při místním spuštění musíte mít také hodnotu klíče definovanou connectionStringSetting v souborulocal.settings.json . Jinak se vaše aplikace nemůže připojit ke službě z místního počítače a dojde k chybě.