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.
Fontos
A folyamaton belüli modell támogatása 2026. november 10-én megszűnik. Erősen javasoljuk, hogy az alkalmazásokat az elkülönített feldolgozói modellbe migrálja a teljes támogatás érdekében.
[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 RabbitMQTrigger
van á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 ConnectStringSetting figyelmen 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 ConnectStringSetting figyelmen 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 ConnectStringSetting figyelmen 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 >" . |
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 5672 mutat. |
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 ConnectStringSetting figyelmen 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 ConnectStringSetting figyelmen 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 ConnectStringSetting figyelmen 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 5672 mutat. |
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 RabbitMQTrigger következőnek kell lennie: . |
direction | A beállításnak a in kö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 connectStringSetting figyelmen 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 connectStringSetting figyelmen 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 connectStringSetting figyelmen 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 5672 mutat. |
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.
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.
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. A host.json fájl beállításai a függvényalkalmazás-példány összes függvényére vonatkoznak. 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ó.
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:
- A RabbitMQ felügyeleti beépülő modul engedélyezése
- Keresse meg a http://{node-hostname}:15672 címet, és jelentkezzen be a felhasználónévvel és jelszóval.