Översikt över RabbitMQ-utlösare för Azure Functions
Kommentar
RabbitMQ-bindningarna stöds endast fullt ut i Premium- och Dedicated-abonnemang . Förbrukning stöds inte.
Använd RabbitMQ-utlösaren för att svara på meddelanden från en RabbitMQ-kö.
Information om konfiguration och konfigurationsinformation finns i översikten.
Exempel
En C#-funktion kan skapas med något av följande C#-lägen:
- Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
- Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
- C#-skript: Används främst när du skapar C#-funktioner i Azure-portalen.
Viktigt!
Supporten upphör för den pågående modellen den 10 november 2026. Vi rekommenderar starkt att du migrerar dina appar till den isolerade arbetsmodellen för fullt stöd.
[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;
}
Följande Java-funktion använder anteckningen @RabbitMQTrigger
från Java RabbitMQ-typerna för att beskriva konfigurationen för en RabbitMQ-köutlösare. Funktionen hämtar meddelandet som placerats i kön och lägger till det i loggarna.
@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);
}
I följande exempel visas en RabbitMQ-utlösarbindning i en function.json-fil och en JavaScript-funktion som använder bindningen. Funktionen läser och loggar ett RabbitMQ-meddelande.
Här är bindningsdata i filen function.json :
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Här är JavaScript-skriptkoden:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
I följande exempel visas hur du läser ett RabbitMQ-kömeddelande via en utlösare.
En RabbitMQ-bindning definieras i function.json där typen är inställd på 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)
Attribut
C#-bibliotek för både process- och isolerad arbetsprocess använder attributet för att definiera funktionen. C#-skriptet använder i stället en function.json konfigurationsfil.
Attributets konstruktor tar följande parametrar:
Parameter | Description |
---|---|
QueueName | Namnet på kön som meddelanden ska tas emot från. |
HostName | Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder ConnectStringSetting . |
UserNameSetting | Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%" . Ignoreras när du använder ConnectStringSetting . |
PasswordSetting | Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%" . Ignoreras när du använder ConnectStringSetting . |
ConnectionStringSetting | Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett ConnectionStringSetting: "rabbitMQConnection" behöver du i både local.settings.json och i funktionsappen en inställning som "RabbitMQConnection" : "< ActualConnectionstring >" . |
Port | Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672 . |
I C#-klassbibliotek använder du attributet RabbitMQTrigger .
Här är ett RabbitMQTrigger
attribut i en metodsignatur för ett isolerat arbetsprocessbibliotek:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Kommentarer
Med anteckningen RabbitMQTrigger
kan du skapa en funktion som körs när ett RabbitMQ-meddelande skapas.
Kommentaren stöder följande konfigurationsalternativ:
Parameter | Description |
---|---|
queueName | Namnet på kön som meddelanden ska tas emot från. |
hostName | Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder ConnectStringSetting . |
userNameSetting | Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%" . Ignoreras när du använder ConnectStringSetting . |
passwordSetting | Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%" . Ignoreras när du använder ConnectStringSetting . |
connectionStringSetting | Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett ConnectionStringSetting: "rabbitMQConnection" behöver du i både local.settings.json och i funktionsappen en inställning som "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672 . |
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
function.json egenskap | beskrivning |
---|---|
typ | Måste anges till RabbitMQTrigger . |
riktning | Måste anges till in . |
Namn | Namnet på variabeln som representerar kön i funktionskoden. |
queueName | Namnet på kön som meddelanden ska tas emot från. |
hostName | Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder connectStringSetting . |
userNameSetting | Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%" . Ignoreras när du använder connectStringSetting . |
passwordSetting | Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%" . Ignoreras när du använder connectStringSetting . |
connectionStringSetting | Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett connectionStringSetting: "rabbitMQConnection" behöver du i både local.settings.json och i funktionsappen en inställning som "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672 . |
När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values
samlingen.
Se avsnittet Exempel för fullständiga exempel.
Användning
Vilken parametertyp som stöds av RabbitMQ-utlösaren beror på vilken C#-modalitet som används.
RabbitMQ-bindningarna stöder för närvarande endast sträng- och serialiserbara objekttyper när de körs i en isolerad process.
Ett fullständigt exempel finns i C#- exempel.
Kömeddelandet är tillgängligt via context.bindings.<NAME>
där <NAME>
matchar namnet som definierats i function.json. Om nyttolasten är JSON deserialiseras värdet till ett objekt.
Köer med obeställbara meddelanden
Köer och utbyten med obeställbara meddelanden kan inte styras eller konfigureras från RabbitMQ-utlösaren. Om du vill använda köer med obeställbara meddelanden förkonfigurerar du kön som används av utlösaren i RabbitMQ. Se RabbitMQ-dokumentationen.
host.json inställningar
I det här avsnittet beskrivs de konfigurationsinställningar som är tillgängliga för den här bindningen i version 2.x och senare. Inställningar i host.json-filen gäller för alla funktioner i en funktionsappinstans. Exemplet host.json filen nedan innehåller endast version 2.x+-inställningarna för den här bindningen. Mer information om konfigurationsinställningar för funktionsappar i version 2.x och senare versioner finns i host.json referens för Azure Functions.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Property | Standardvärde | beskrivning |
---|---|---|
prefetchCount | 30 | Hämtar eller anger antalet meddelanden som meddelandemottagaren kan begära samtidigt och cachelagras. |
queueName | saknas | Namnet på kön som ska ta emot meddelanden från. |
connectionString | saknas | RabbitMQ-meddelandekön niska veze. Niska veze anges direkt här och inte via en appinställning. |
port | 0 | (ignoreras om du använder connectionString) Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på standardportinställningen för rabbitmq-klienten: 5672. |
Lokal testning
Kommentar
ConnectionString har företräde framför "hostName", "userName" och "password". Om alla dessa anges åsidosätter connectionString de andra två.
Om du testar lokalt utan en niska veze bör du ange inställningen "hostName" och "userName" och "password" om det är tillämpligt i avsnittet "rabbitMQ" i host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Property | Standardvärde | beskrivning |
---|---|---|
hostName | saknas | (ignoreras om du använder connectionString) Värdnamn för kön (till ex: 10.26.45.210) |
userName | saknas | (ignoreras om du använder connectionString) Namn för åtkomst till kön |
password | saknas | (ignoreras om du använder connectionString) Lösenord för att komma åt kön |
Aktivera körningsskalning
För att RabbitMQ-utlösaren ska kunna skalas ut till flera instanser måste inställningen Körningsskalningsövervakning vara aktiverad.
I portalen finns den här inställningen under Konfigurationsfunktionens>körningsinställningar för funktionsappen.
I CLI kan du aktivera Körningsskalningsövervakning med hjälp av följande kommando:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
Övervaka RabbitMQ-slutpunkt
Så här övervakar du köer och utbyten för en viss RabbitMQ-slutpunkt:
- Aktivera plugin-programmet för RabbitMQ-hantering
- Bläddra till http://{node-hostname}:15672 och logga in med ditt användarnamn och lösenord.