Sdílet prostřednictvím


Přehled triggeru RabbitMQ pro Azure Functions

Poznámka:

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

Pomocí triggeru RabbitMQ můžete reagovat na zprávy z 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 @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)

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.
Název hostitele 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 .

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

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 RabbitMQTriggerhodnotu .
direction 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.
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 .

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.

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

Přečtěte si poznámky v Javě.

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.

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.

nastavení host.json

Tato část popisuje nastavení konfigurace dostupné pro tuto vazbu ve verzích 2.x a novějších. Nastavení v souboru host.json platí pro všechny funkce v instanci aplikace funkcí. Následující příklad host.json souboru obsahuje pouze nastavení verze 2.x+ pro tuto vazbu. Další informace o nastavení konfigurace aplikace funkcí ve verzích 2.x a novějších verzích najdete v host.json referenčních informacích ke službě Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Vlastnost Výchozí Popis
prefetchCount 30 Získá nebo nastaví počet zpráv, které příjemce zprávy může současně požadovat a je uložen v mezipaměti.
queueName Není k dispozici Název fronty pro příjem zpráv.
připojovací řetězec Není k dispozici Fronta zpráv RabbitMQ připojovací řetězec. Připojovací řetězec je zde přímo zadán, a ne prostřednictvím nastavení aplikace.
port 0 (ignorováno, pokud používáte connectionString) Získá nebo nastaví použitý port. Výchozí hodnota je 0, což odkazuje na výchozí nastavení portu klienta rabbitmq: 5672.

Místní testování

Poznámka:

Připojovací řetězec má přednost před "hostName", "userName" a "password". Pokud jsou všechny nastavené, bude připojovací řetězec přepsat ostatní dva.

Pokud testujete místně bez připojovací řetězec, měli byste v části "rabbitMQ" v části host.json "rabbitMQ" nastavit nastavení "hostName" a "userName" a "password":

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Vlastnost Výchozí Popis
hostName Není k dispozici (ignorováno, pokud používáte connectionString)
Název hostitele fronty (např. 10.26.45.210)
userName Není k dispozici (ignorováno, pokud používáte connectionString)
Název pro přístup k frontě
Heslo Není k dispozici (ignorováno, pokud používáte connectionString)
Heslo pro přístup k frontě

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 Nastavení modulu runtime konfigurační>funkce pro vaši aplikaci funkcí.

VNETToggle

V rozhraní příkazového řádku můžete povolit monitorování škálování modulu runtime pomocí následujícího příkazu:

az resource update -g <resource_group> -n <function_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 na http://{node-hostname}:15672 a přihlaste se pomocí svého uživatelského jména a hesla.

Další kroky