Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om 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.