Overzicht van RabbitMQ-trigger voor Azure Functions
Notitie
De RabbitMQ-bindingen worden alleen volledig ondersteund voor Premium- en Dedicated-abonnementen . Verbruik wordt niet ondersteund.
Gebruik de RabbitMQ-trigger om te reageren op berichten uit een RabbitMQ-wachtrij.
Zie het overzicht voor informatie over het instellen en configureren van details.
Opmerking
U kunt een C#-functie maken met behulp van een van de volgende C#-modi:
- Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
- In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
- C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.
Belangrijk
De ondersteuning wordt beëindigd voor het in-process model op 10 november 2026. We raden u ten zeerste aan uw apps te migreren naar het geïsoleerde werkrolmodel voor volledige ondersteuning.
[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;
}
De volgende Java-functie gebruikt de @RabbitMQTrigger
aantekening van de Java RabbitMQ-typen om de configuratie voor een RabbitMQ-wachtrijtrigger te beschrijven. De functie pakt het bericht in de wachtrij en voegt het toe aan de logboeken.
@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);
}
In het volgende voorbeeld ziet u een RabbitMQ-triggerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding. De functie leest en registreert een RabbitMQ-bericht.
Dit zijn de bindingsgegevens in het bestand function.json :
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Dit is de JavaScript-scriptcode:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
In het volgende voorbeeld ziet u hoe u een RabbitMQ-wachtrijbericht leest via een trigger.
Een RabbitMQ-binding wordt gedefinieerd in function.json waar het type is ingesteld op 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)
Kenmerken
Zowel in-process als geïsoleerde werkproces C#-bibliotheken gebruiken het kenmerk om de functie te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.
De constructor van het kenmerk gebruikt de volgende parameters:
Parameter | Description |
---|---|
QueueName | Naam van de wachtrij waaruit berichten moeten worden ontvangen. |
HostNaam | Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik ConnectStringSetting . |
UserNameSetting | Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%" . Genegeerd bij gebruik ConnectStringSetting . |
PasswordSetting | Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%" . Genegeerd bij gebruik ConnectStringSetting . |
ConnectionStringSetting | De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld ConnectionStringSetting: "rabbitMQConnection" , hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "RabbitMQConnection" : "< ActualConnectionstring >" . |
Poort | Hiermee haalt u de gebruikte poort op of stelt u deze in. De standaardwaarde is 0, wat verwijst naar de standaardpoortinstelling van de RabbitMQ-client.5672 |
Gebruik in C#-klassebibliotheken het kenmerk RabbitMQTrigger .
Hier volgt een RabbitMQTrigger
kenmerk in een methodehandtekening voor een geïsoleerde werkprocesbibliotheek:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Aantekeningen
Met de RabbitMQTrigger
aantekening kunt u een functie maken die wordt uitgevoerd wanneer een RabbitMQ-bericht wordt gemaakt.
De aantekening ondersteunt de volgende configuratieopties:
Parameter | Description |
---|---|
queueName | Naam van de wachtrij waaruit berichten moeten worden ontvangen. |
hostName | Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik ConnectStringSetting . |
userNameSetting | Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%" . Genegeerd bij gebruik ConnectStringSetting . |
passwordSetting | Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%" . Genegeerd bij gebruik ConnectStringSetting . |
connectionStringSetting | De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld ConnectionStringSetting: "rabbitMQConnection" , hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Hiermee haalt u de gebruikte poort op of stelt u deze in. De standaardwaarde is 0, wat verwijst naar de standaardpoortinstelling van de RabbitMQ-client.5672 |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
function.json-eigenschap | Beschrijving |
---|---|
type | Moet worden ingesteld op RabbitMQTrigger . |
direction | Moet worden ingesteld op in . |
name | De naam van de variabele die de wachtrij in functiecode vertegenwoordigt. |
queueName | Naam van de wachtrij waaruit berichten moeten worden ontvangen. |
hostName | Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik connectStringSetting . |
userNameSetting | Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "%< UserNameFromSettings >%" . Genegeerd bij gebruik connectStringSetting . |
passwordSetting | Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals PasswordSetting: "%< PasswordFromSettings >%" . Genegeerd bij gebruik connectStringSetting . |
connectionStringSetting | De naam van de app-instelling die de RabbitMQ-berichtenwachtrij bevat verbindingsreeks. De trigger werkt niet wanneer u de verbindingsreeks rechtstreeks opgeeft via een app-instelling. Wanneer u bijvoorbeeld hebt ingesteld connectionStringSetting: "rabbitMQConnection" , hebt u in zowel de local.settings.json als in uw functie-app een instelling nodig, zoals "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Hiermee haalt u de gebruikte poort op of stelt u deze in. De standaardwaarde is 0, wat verwijst naar de standaardpoortinstelling van de RabbitMQ-client.5672 |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.
Zie de sectie Voorbeeld voor volledige voorbeelden.
Gebruik
Het parametertype dat wordt ondersteund door de RabbitMQ-trigger, is afhankelijk van de gebruikte C#-modaliteit.
De RabbitMQ-bindingen ondersteunen momenteel alleen tekenreeks- en serialiseerbare objecttypen wanneer ze worden uitgevoerd in een geïsoleerd proces.
Zie het C# -voorbeeld voor een volledig voorbeeld.
Het wachtrijbericht is beschikbaar via context.bindings.<NAME>
de locatie die <NAME>
overeenkomt met de naam die is gedefinieerd in function.json. Als de nettolading JSON is, wordt de waarde gedeserialiseerd in een object.
Wachtrijen met dode letters
Wachtrijen en uitwisselingen van dode brieven kunnen niet worden beheerd of geconfigureerd vanuit de RabbitMQ-trigger. Als u wachtrijen met dode letters wilt gebruiken, configureert u de wachtrij die wordt gebruikt door de trigger in RabbitMQ. Raadpleeg de RabbitMQ-documentatie.
host.json-instellingen
In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json zijn van toepassing op alle functies in een exemplaar van een functie-app. Het onderstaande voorbeeld host.json bestand bevat alleen de instellingen voor versie 2.x+ voor deze binding. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps in versies 2.x en latere versies.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Eigenschappen | Standaard | Beschrijving |
---|---|---|
prefetchCount | 30 | Hiermee wordt het aantal berichten opgehaald of ingesteld dat de ontvanger van het bericht tegelijkertijd kan aanvragen en in de cache wordt opgeslagen. |
queueName | n.v.t. | Naam van de wachtrij waaruit berichten moeten worden ontvangen. |
connectionString | n.v.t. | De RabbitMQ-berichtenwachtrij verbindingsreeks. De verbindingsreeks wordt hier rechtstreeks opgegeven en niet via een app-instelling. |
poort | 0 | (genegeerd als u connectionString gebruikt) Hiermee haalt u de gebruikte poort op of stelt u deze in. Standaard ingesteld op 0, wat verwijst naar de standaardpoortinstelling van rabbitmq-client: 5672. |
Lokaal testen
Notitie
De connectionString heeft voorrang op 'hostName', 'userName' en 'password'. Als deze allemaal zijn ingesteld, overschrijft connectionString de andere twee.
Als u lokaal test zonder een verbindingsreeks, moet u de instelling 'hostName' en 'userName' en 'password' instellen, indien van toepassing in de sectie 'rabbitMQ' van host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Eigenschappen | Standaard | Beschrijving |
---|---|---|
hostName | n.v.t. | (genegeerd als u connectionString gebruikt) Hostnaam van de wachtrij (bijvoorbeeld: 10.26.45.210) |
gebruikersnaam | n.v.t. | (genegeerd als u connectionString gebruikt) Naam voor toegang tot de wachtrij |
password | n.v.t. | (genegeerd als u connectionString gebruikt) Wachtwoord voor toegang tot de wachtrij |
Runtime schalen inschakelen
Om de RabbitMQ-trigger uit te schalen naar meerdere exemplaren, moet de instelling runtimeschaalbewaking zijn ingeschakeld.
Deze instelling vindt u in de portal onder Runtime-instellingen van de configuratiefunctie>voor uw functie-app.
In de CLI kunt u Bewaking van runtimeschaal inschakelen met behulp van de volgende opdracht:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
Bewaking RabbitMQ-eindpunt
Uw wachtrijen en uitwisselingen voor een bepaald RabbitMQ-eindpunt bewaken:
- De RabbitMQ-beheerinvoegtoepassing inschakelen
- Blader naar http://{node-hostname}:15672 en meld u aan met uw gebruikersnaam en wachtwoord.