RabbitMQ kimeneti kötés 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 kimeneti kötéssel üzeneteket küldhet egy RabbitMQ-üzenetsorba.

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 @RabbitMQOutput Java RabbitMQ-típusok megjegyzéseit használja a RabbitMQ-üzenetsor kimeneti kötésének konfigurálásához. A függvény 5 percenként üzenetet küld a RabbitMQ üzenetsornak, amikor egy TimerTrigger aktiválja.

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

Az alábbi példa egy RabbitMQ kimeneti kötést mutat be egy function.json fájlban, és egy JavaScript-függvényt , amely a kötést használja. A függvény beolvassa az üzenetet egy HTTP-eseményindítóból, és a RabbitMQ-üzenetsorba küldi.

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

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Az alábbi JavaScript-kód:

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

Az alábbi példa egy RabbitMQ kimeneti kötést mutat be egy function.json fájlban és egy Python-függvényt, amely a kötést használja. A függvény beolvassa az üzenetet egy HTTP-eseményindítóból, és a RabbitMQ-üzenetsorba küldi.

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

{
    "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"
        }
    ]
}

A _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'

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

Beállítás 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.

További részletekért tekintse meg a kimeneti kötés példáját .

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 RabbitMQkövetkezőnek kell lennie: .
direction A beállításnak a outkö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, amelybe üzeneteket szeretne küldeni.
Hostname Az üzenetsor állomásneve, például 10.26.45.210. Használat közben connectStringSettingfigyelmen kívül hagyva.
Felhasználónév Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például: "< UserNameFrom Gépház >". Használat közben connectStringSettingfigyelmen kívül hagyva.
Jelszó Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például: UserNameSetting: "< UserNameFrom Gépház >". 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 a kapcsolati sztring közvetlenül adja meg, nem pedig egy alkalmazásbeállításon keresztül a következőbenlocal.settings.json: . Ha például be van állítva connectionStringSetting: "rabbitMQConnection" , akkor a local.settings.json és a függvényalkalmazásban is szükség 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 Functions futtatókörnyezet verziójától, a bővítménycsomag verziójától és 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 feldolgozófolyamatban futnak.

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

A kimeneti kötéshez használja a következő paramétertípusokat:

  • byte[] – Ha a paraméter értéke null, amikor a függvény kilép, a Functions nem hoz létre üzenetet.
  • string – Ha a paraméter értéke null, amikor a függvény kilép, a Functions nem hoz létre üzenetet.
  • POJO – Ha a paraméter értéke nem Java-objektumként van formázva, hibaüzenet jelenik meg.

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övetkező lépések