Sdílet prostřednictvím


Přehled triggeru RabbitMQ pro Azure Functions

Pomocí triggeru RabbitMQ můžete reagovat na zprávy z 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 @RabbitMQTrigger z typů Java RabbitMQ k popisu konfigurace triggeru fronty RabbitMQ. Funkce vezme zprávu umístěnou ve frontě a přidá ji do protokolů.

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

Následující příklad ukazuje vazbu triggeru RabbitMQ v souboru function.json a funkci JavaScriptu, která používá vazbu. Funkce přečte a zaprokoluje zprávu RabbitMQ.

Tady jsou data vazby v souboru function.json :

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

Tady je kód skriptu JavaScriptu:

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

Následující příklad ukazuje, jak číst zprávu fronty RabbitMQ prostřednictvím triggeru.

Vazba RabbitMQ je definována v function.json , kde je typ nastaven na 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)

Příklady PowerShellu nejsou momentálně dostupné.

Atributy

Izolované pracovní procesy i knihovny jazyka C# v procesu slouží RabbitMQTriggerAttribute k definování funkce, kde konkrétní vlastnosti atributu závisí na verzi rozšíření.

Konstruktor atributu přijímá tyto parametry:

Parametr Popis
Název fronty 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 .

Poznámky

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

Poznámka podporuje následující možnosti konfigurace:

Parametr 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 Logická hodnota, která může být nastavena tak, aby true indikující, že ověření certifikátu by mělo být zakázáno. Výchozí hodnota je false. 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 RabbitMQTriggerhodnotu .
směr Musí být nastavena na inhodnotu .
Jméno Název proměnné, která představuje frontu v kódu funkce.
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 Logická hodnota, která může být nastavena tak, aby true indikující, že ověření certifikátu by mělo být zakázáno. Výchozí hodnota je false. 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 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 procesu.

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ě.

Fronty nedoručených zpráv

Fronty a výměny nedoručených zpráv nelze řídit ani konfigurovat z triggeru RabbitMQ. Pokud chcete použít fronty nedoručených zpráv, předkonfigurujte frontu používanou triggerem v RabbitMQ. Projděte si dokumentaci k RabbitMQ.

Povolení škálování modulu runtime

Aby trigger RabbitMQ škáloval kapacitu na více instancí, musí být povolené nastavení monitorování škálování modulu runtime.

Toto nastavení najdete na portálu v části >funkce pro vaši aplikaci funkcí.

VNETToggle

V Azure CLI můžete povolit monitorování škálování modulu runtime pomocí tohoto příkazu:

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

Monitorování koncového bodu RabbitMQ

Monitorování front a výměn pro určitý koncový bod RabbitMQ:

  • Povolení modulu plug-in pro správu RabbitMQ
  • Přejděte a http://{node-hostname}:15672 přihlaste se pomocí svého uživatelského jména a hesla.

Související článek