Číst v angličtině

Sdílet prostřednictvím


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

Volba programovacího jazyka

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

Následující příklad ukazuje funkci jazyka C#, která odešle zprávu RabbitMQ při aktivaci časovačem TimerTrigger každých 5 minut pomocí návratové hodnoty metody jako výstup:

cs
[FunctionName("RabbitMQOutput")]
[return: RabbitMQ(QueueName = "outputQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

Následující příklad ukazuje, jak používat rozhraní IAsyncCollector k odesílání zpráv.

cs
[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] string rabbitMQEvent,
[RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<string> outputEvents,
ILogger log)
{
     // send the message
    await outputEvents.AddAsync(JsonConvert.SerializeObject(rabbitMQEvent));
}

Následující příklad ukazuje, jak odeslat zprávy jako poCOs.

cs
namespace Company.Function
{
    public class TestClass
    {
        public string x { get; set; }
    }
    public static class RabbitMQOutput{
        [FunctionName("RabbitMQOutput")]
        public static async Task Run(
        [RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] TestClass rabbitMQEvent,
        [RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<TestClass> outputPocObj,
        ILogger log)
        {
            // send the message
            await outputPocObj.AddAsync(rabbitMQEvent);
        }
    }
}

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.

Java
@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 :

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:

JavaScript
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 :

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:

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

Tady je RabbitMQTrigger atribut v podpisu metody pro knihovnu v procesu:

C#
[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("SourceQueue", ConnectionStringSetting = "TriggerConnectionString")] string rabbitMQEvent,
[RabbitMQ("DestinationQueue", ConnectionStringSetting = "OutputConnectionString")]IAsyncCollector<string> outputEvents,
ILogger log)
{
    ...
}

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: "< UserNameFromSettings >". Ignorováno při použití connectStringSetting.
heslo Název nastavení aplikace, které obsahuje heslo pro přístup k frontě, například UserNameSetting: "< UserNameFromSettings >". 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í

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

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

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.
  • POCO – Zpráva je naformátovaná jako objekt jazyka C#.

Při práci s funkcemi jazyka C#:

  • Asynchronní funkce potřebují návratovou hodnotu nebo IAsyncCollector ne out parametr.

Ú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