Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik de RabbitMQ-uitvoerbinding om berichten te verzenden naar een RabbitMQ-wachtrij.
Notitie
De RabbitMQ-bindingen worden alleen volledig ondersteund op Elastic Premium - en Dedicated-abonnementen (App Service ). Flex Consumption - en Consumption-abonnementen worden nog niet ondersteund.
RabbitMQ-bindingen worden niet ondersteund door de Azure Functions v1.x-runtime.
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. Er is een geïsoleerd werkproces vereist om C#-functies te ondersteunen die worden uitgevoerd op langetermijnondersteuning (LTS) en niet-LTS-versies voor .NET en .NET Framework.
- In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Azure 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 geïsoleerde werkproces- als in-proces C#-bibliotheken gebruiken een kenmerk om een uitvoerbinding te definiëren die naar een RabbitMQ-wachtrij schrijft.
De RabbitMQOutputAttribute constructor accepteert deze parameters:
| Kenmerk | Beschrijving |
|---|---|
| QueueName- | Naam van de wachtrij waaruit berichten moeten worden ontvangen. |
| HostNaam | Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie. |
| ConnectionStringSetting | De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie. |
| Gebruikersnaaminstelling | Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie. |
| Wachtwoord instellen | Deze parameter wordt niet meer ondersteund en wordt genegeerd. Deze wordt verwijderd in een toekomstige versie. |
| 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 |
| DisableCertificateValidation | Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of certificaatvalidatie moet worden uitgeschakeld. Niet aanbevolen voor productie. Is niet van toepassing wanneer SSL is uitgeschakeld. |
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. |
| connectionStringSetting | De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie. |
| disableCertificateValidation | Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of certificaatvalidatie moet worden uitgeschakeld. Niet aanbevolen voor productie. Is niet van toepassing wanneer SSL is uitgeschakeld. |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
| function.json-eigenschap | Beschrijving |
|---|---|
| soort | Moet worden ingesteld op RabbitMQ. |
| richting | Moet worden ingesteld op out. |
| naam | De naam van de variabele die de wachtrij in functiecode vertegenwoordigt. |
| queueName | De naam van de wachtrij waar berichten naartoe moeten worden verzonden. |
| connectionStringSetting | De naam van de app-instelling die de verbindingsreeks voor uw RabbitMQ-server bevat. Deze instelling heeft alleen de naam van een app-instellingssleutel. U kunt een verbindingsreekswaarde niet rechtstreeks instellen. Zie Verbindingen voor meer informatie. |
| disableCertificateValidation | Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of certificaatvalidatie moet worden uitgeschakeld. Niet aanbevolen voor productie. Is niet van toepassing wanneer SSL is uitgeschakeld. |
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.
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.
Connections
Belangrijk
De RabbitMQ-binding biedt geen ondersteuning voor Microsoft Entra-verificatie en beheerde identiteiten. U kunt Azure Key Vault gebruiken om uw RabbitMQ-verbindingsreeks s centraal te beheren. Zie Verbindingen beheren voor meer informatie.
Vanaf versie 2.x van de extensie, hostNameen userNameSettingworden ze passwordSetting niet meer ondersteund om een verbinding met de RabbitMQ-server te definiëren. U moet in plaats daarvan gebruiken connectionStringSetting.
De connectionStringSetting eigenschap kan alleen de naam van een sleutel-waardepaar accepteren in app-instellingen. U kunt een verbindingsreekswaarde niet rechtstreeks instellen in de binding.
Als u bijvoorbeeld hebt ingesteld connectionStringSettingrabbitMQConnection op de bindingsdefinitie, moet uw functie-app een app-instelling hebben met de naam die een verbindingswaarde retourneert rabbitMQConnection , zoals amqp://myuser:***@contoso.rabbitmq.example.com:5672 een Azure Key Vault-verwijzing.
Wanneer u lokaal werkt, moet u ook de sleutelwaarde hebben die connectionStringSetting moet worden gedefinieerd in uw local.settings.json-bestand . Anders kan uw app geen verbinding maken met de service vanaf uw lokale computer en treedt er een fout op.