RabbitMQ-eseményindító az Azure Functionshez – áttekintés

Feljegyzés

A RabbitMQ-kötések csak prémium és dedikált csomagokban támogatottak. A használat nem támogatott.

A RabbitMQ-eseményindítóval válaszolhat a RabbitMQ-üzenetsor üzeneteire.

A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.

Példa

A C#-függvények a következő C#-módok egyikével hozhatók létre:

  • Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges az LTS- és nem LTS-verziókon futó C#-függvények támogatásához .NET és .NET-keretrendszer.
  • Folyamaton belüli modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet.
  • C#-szkript: Elsősorban C#-függvények Azure Portalon való létrehozásakor használatos.
[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;
}

Az alábbi Java-függvény a @RabbitMQTrigger Java RabbitMQ-típusok megjegyzéseit használja a RabbitMQ-üzenetsor-eseményindító konfigurációjának leírásához. A függvény megragadja az üzenetsorra helyezett üzenetet, és hozzáadja a naplókhoz.

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

Az alábbi példa egy RabbitMQ-eseményindító kötését mutatja be egy function.json fájlban, valamint egy JavaScript-függvényt , amely a kötést használja. A függvény egy RabbitMQ-üzenetet olvas és naplóz.

A kötési adatok a function.json fájlban:

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

A JavaScript-szkript kódja:

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

Az alábbi példa bemutatja, hogyan olvasható be a RabbitMQ üzenetsor üzenete egy eseményindítón keresztül.

A RabbitMQ-kötés function.json van definiálva, ahol a típus a következőre RabbitMQTriggervan állítva: .

{​​
    "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)

Attribútumok

A függvény definiálásához a folyamaton belüli és az izolált feldolgozói folyamat C# kódtárai is az attribútumot használják. A C#-szkript ehelyett function.json konfigurációs fájlt használ.

Az attribútum konstruktora a következő paramétereket veszi fel:

Paraméter Leírás
QueueName Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni.
Hostname Az üzenetsor állomásneve, például 10.26.45.210. Használat közben ConnectStringSettingfigyelmen kívül hagyva.
UserNameSetting Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például UserNameSetting: "%< UserNameFromSettings >%". Használat közben ConnectStringSettingfigyelmen kívül hagyva.
PasswordSetting Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például PasswordSetting: "%< PasswordFromSettings >%". Használat közben ConnectStringSettingfigyelmen kívül hagyva.
Csatlakozás ionStringSetting A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha közvetlenül egy alkalmazásbeállításon keresztül adja meg a kapcsolati sztring. Ha például beállította a beállítást ConnectionStringSetting: "rabbitMQConnection", akkor a local.settings.json és a függvényalkalmazásban is szüksége van egy olyan beállításra, mint a "RabbitMQConnection" : "< ActualConnectionstring >".
Port Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672mutat.

A C#-osztálykódtárakban használja a RabbitMQTrigger attribútumot.

Íme egy attribútum egy RabbitMQTrigger metódus-aláírásban egy izolált feldolgozófolyamat-kódtárhoz:

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

Jegyzetek

A RabbitMQTrigger széljegyzet lehetővé teszi, hogy egy RabbitMQ-üzenet létrehozásakor futó függvényt hozzon létre.

A széljegyzet a következő konfigurációs beállításokat támogatja:

Paraméter Leírás
queueName Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni.
Hostname Az üzenetsor állomásneve, például 10.26.45.210. Használat közben ConnectStringSettingfigyelmen kívül hagyva.
userNameSetting Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például UserNameSetting: "%< UserNameFromSettings >%". Használat közben ConnectStringSettingfigyelmen kívül hagyva.
passwordSetting Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például PasswordSetting: "%< PasswordFromSettings >%". Használat közben ConnectStringSettingfigyelmen kívül hagyva.
connectionStringSetting A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha közvetlenül egy alkalmazásbeállításon keresztül adja meg a kapcsolati sztring. Ha például beállította a beállítást ConnectionStringSetting: "rabbitMQConnection", akkor a local.settings.json és a függvényalkalmazásban is szüksége van egy olyan beállításra, mint a "RabbitMQConnection" : "< ActualConnectionstring >".
kikötő Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672mutat.

Konfiguráció

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.

function.json tulajdonság Leírás
type A beállításnak a RabbitMQTriggerkövetkezőnek kell lennie: .
direction A beállításnak a inkövetkezőnek kell lennie: .
név Annak a változónak a neve, amely az üzenetsort jelöli a függvénykódban.
queueName Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni.
Hostname Az üzenetsor állomásneve, például 10.26.45.210. Használat közben connectStringSettingfigyelmen kívül hagyva.
userNameSetting Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például UserNameSetting: "%< UserNameFromSettings >%". Használat közben connectStringSettingfigyelmen kívül hagyva.
passwordSetting Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például PasswordSetting: "%< PasswordFromSettings >%". Használat közben connectStringSettingfigyelmen kívül hagyva.
connectionStringSetting A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha közvetlenül egy alkalmazásbeállításon keresztül adja meg a kapcsolati sztring. Ha például beállította a beállítást connectionStringSetting: "rabbitMQConnection", akkor a local.settings.json és a függvényalkalmazásban is szüksége van egy olyan beállításra, mint a "rabbitMQConnection" : "< ActualConnectionstring >".
kikötő Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672mutat.

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

A teljes példákért tekintse meg a Példa szakaszt .

Használat

A RabbitMQ-eseményindító által támogatott paramétertípus a használt C# módtól függ.

A RabbitMQ-kötések jelenleg csak sztring- és szerializálható objektumtípusokat támogatnak, ha izolált folyamatban futnak.

A teljes példáért tekintse meg a C# példát.

Tekintse meg a Java-széljegyzeteket.

Az üzenetsor-üzenet azon keresztül context.bindings.<NAME> érhető el, ahol <NAME> egyezik a function.json definiált névvel. Ha a hasznos adat JSON, az érték deszerializálva lesz egy objektumba.

Tekintse meg a Python-példát.

Kézbesítetlen levelek üzenetsorai

A kézbesítetlen levelek üzenetsorai és cseréjei nem vezérelhetők vagy konfigurálhatók a RabbitMQ-eseményindítóból. A kézbesítetlen levelek üzenetsorainak használatához előre konfigurálja az eseményindító által használt üzenetsort a RabbitMQ-ban. Tekintse meg a RabbitMQ dokumentációját.

host.json beállítások

Ez a szakasz a kötéshez elérhető konfigurációs beállításokat ismerteti a 2.x és újabb verziókban. Gépház a host.json fájlban egy függvényalkalmazás-példány összes függvényére vonatkozik. Az alábbi példában host.json fájl csak a kötés 2.x+ verziójának beállításait tartalmazza. A függvényalkalmazások konfigurációs beállításairól a 2.x és újabb verziókban host.json Azure Functionsre vonatkozó hivatkozásban talál további információt.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Tulajdonság Alapértelmezett Leírás
prefetchCount 30 Lekéri vagy beállítja az üzenet fogadója által egyidejűleg kérhető és gyorsítótárazott üzenetek számát.
queueName n.a. Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni.
connectionString n.a. A RabbitMQ üzenetsor kapcsolati sztring. A kapcsolati sztring közvetlenül itt van megadva, és nem egy alkalmazásbeállításon keresztül.
kikötő 0 (a connectionString használata esetén figyelmen kívül hagyva) Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, ami a Rabbitmq-ügyfél alapértelmezett portbeállítására mutat: 5672.

Helyi tesztelés

Feljegyzés

A connectionString elsőbbséget élvez a "hostName", a "userName" és a "password" kifejezéssel szemben. Ha ezek mind be vannak állítva, a connectionString felülbírálja a másik kettőt.

Ha helyileg tesztel kapcsolati sztring nélkül, akkor a host.json "rabbitMQ" szakaszában meg kell adnia a "hostName" és a "userName" és a "password" beállítást:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Tulajdonság Alapértelmezett Leírás
Hostname n.a. (a connectionString használata esetén figyelmen kívül hagyva)
Az üzenetsor állomásneve (például: 10.26.45.210)
Felhasználónév n.a. (a connectionString használata esetén figyelmen kívül hagyva)
Az üzenetsor eléréséhez szükséges név
jelszó n.a. (a connectionString használata esetén figyelmen kívül hagyva)
Jelszó az üzenetsor eléréséhez

Futtatókörnyezet skálázásának engedélyezése

Ahhoz, hogy a RabbitMQ-eseményindító több példányra skálázható legyen, engedélyezni kell a futtatókörnyezet skálázásának monitorozási beállítását.

A portálon ez a beállítás a függvényalkalmazás konfigurációs>függvény futtatókörnyezeti beállításai között található.

VNETToggle

A parancssori felületen az alábbi paranccsal engedélyezheti a futtatókörnyezeti méretezés monitorozását :

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

RabbitMQ-végpont figyelése

Egy adott RabbitMQ-végpont üzenetsorainak és cseréjének figyelése:

Következő lépések