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.
Důležité
Podpora modelu v procesu skončí 10. listopadu 2026. Důrazně doporučujeme migrovat aplikace do izolovaného modelu pracovního procesu pro plnou podporu.
[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í 5672 portu 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í 5672 portu 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 RabbitMQTrigger hodnotu . |
direction | Musí být nastavena na in hodnotu . |
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í 5672 portu 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.
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í.
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.