Overzicht van RabbitMQ-uitvoerbinding voor Azure Functions
Notitie
De RabbitMQ-bindingen worden alleen volledig ondersteund voor Premium- en Dedicated-abonnementen . Verbruik wordt niet ondersteund.
Gebruik de RabbitMQ-uitvoerbinding om berichten te verzenden naar 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 @RabbitMQOutput
aantekening van de Java RabbitMQ-typen om de configuratie voor een RabbitMQ-uitvoerbinding te beschrijven. De functie verzendt elke 5 minuten een bericht naar de RabbitMQ-wachtrij wanneer deze wordt geactiveerd door een TimerTrigger.
@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");
}
In het volgende voorbeeld ziet u een RabbitMQ-uitvoerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding. De functie leest in het bericht van een HTTP-trigger en voert het uit naar de RabbitMQ-wachtrij.
Dit zijn de bindingsgegevens in het bestand function.json :
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Dit is JavaScript-code:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
In het volgende voorbeeld ziet u een RabbitMQ-uitvoerbinding in een function.json-bestand en een Python-functie die gebruikmaakt van de binding. De functie leest in het bericht van een HTTP-trigger en voert het uit naar de RabbitMQ-wachtrij.
Dit zijn de bindingsgegevens in het bestand function.json :
{
"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"
}
]
}
In _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'
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 RabbitMQOutput
aantekening kunt u een functie maken die wordt uitgevoerd wanneer een RabbitMQ-bericht wordt gemaakt.
De aantekening ondersteunt de volgende configuratie-instellingen:
Instelling | Beschrijving |
---|---|
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 |
Zie het voorbeeld van uitvoerbinding voor meer details.
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 RabbitMQ . |
direction | Moet worden ingesteld op out . |
name | De naam van de variabele die de wachtrij in functiecode vertegenwoordigt. |
queueName | De naam van de wachtrij waar berichten naartoe moeten worden verzonden. |
hostName | Hostnaam van de wachtrij, zoals 10.26.45.210. Genegeerd bij gebruik connectStringSetting . |
userName | Naam van de app-instelling die de gebruikersnaam bevat voor toegang tot de wachtrij, zoals UserNameSetting: "< UserNameFromSettings >". Genegeerd bij gebruik connectStringSetting . |
password | Naam van de app-instelling die het wachtwoord bevat voor toegang tot de wachtrij, zoals UserNameSetting: "< UserNameFromSettings >". 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 in plaats van via een app-instelling in local.settings.json . Als u deze bijvoorbeeld hebt ingesteld connectionStringSetting: "rabbitMQConnection" in zowel de local.settings.json als in uw functie-app, hebt u 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 runtimeversie van Functions, de versie van het extensiepakket en de gebruikte C#-modaliteit.
De RabbitMQ-bindingen ondersteunen momenteel alleen tekenreeks- en serialiseerbare objecttypen wanneer ze worden uitgevoerd in een geïsoleerd werkproces.
Zie het C# -voorbeeld voor een volledig voorbeeld.
Gebruik de volgende parametertypen voor de uitvoerbinding:
byte[]
- Als de parameterwaarde null is wanneer de functie wordt afgesloten, wordt er geen bericht gemaakt.string
- Als de parameterwaarde null is wanneer de functie wordt afgesloten, wordt er geen bericht gemaakt.POJO
- Als de parameterwaarde niet is opgemaakt als een Java-object, wordt er een fout ontvangen.
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.