Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du arbetar med bindningar för Azure Event Hubs för Azure Functions. Azure Functions stöder utlösar- och utdatabindningar för Event Hubs.
Information om konfiguration och konfigurationsinformation finns i översikten.
Använd Event Hubs-utdatabindningen för att skriva händelser till en händelseström. Du måste ha behörighet att skicka till en händelsehubb för att kunna skicka händelser till den.
Kontrollera att nödvändiga paketreferenser finns på plats innan du försöker implementera en utdatabindning.
Viktigt!
Den här artikeln använder flikar för att stödja flera versioner av Node.js programmeringsmodellen. V4-modellen är allmänt tillgänglig och är utformad för att ha en mer flexibel och intuitiv upplevelse för JavaScript- och TypeScript-utvecklare. Mer information om hur v4-modellen fungerar finns i utvecklarguiden Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.
Azure Functions stöder två programmeringsmodeller för Python. Hur du definierar dina bindningar beror på din valda programmeringsmodell.
Med programmeringsmodellen Python v2 kan du definiera bindningar med hjälp av dekoratörer direkt i din Python funktionskod. Mer information finns i utvecklarguiden Python.
Den här artikeln stöder båda programmeringsmodellerna.
Exempel
Go-stöd finns för närvarande inte tillgängligt för denna bindning.
I följande exempel visas en C#-funktion som skriver en meddelandesträng till en händelsehubb med metodens returvärde som utdata:
[Function(nameof(EventHubFunction))]
[FixedDelayRetry(5, "00:00:10")]
[EventHubOutput("dest", Connection = "EventHubConnection")]
public string EventHubFunction(
[EventHubTrigger("src", Connection = "EventHubConnection")] string[] input,
FunctionContext context)
{
_logger.LogInformation("First Event Hubs triggered message: {msg}", input[0]);
var message = $"Output message created at {DateTime.Now}";
return message;
}
I följande exempel visas en timerutlöst TypeScript-funktion som skickar ett enda meddelande till en händelsehubb:
import { app, InvocationContext, output, Timer } from '@azure/functions';
export async function timerTrigger1(myTimer: Timer, context: InvocationContext): Promise<string> {
const timeStamp = new Date().toISOString();
return `Message created at: ${timeStamp}`;
}
app.timer('timerTrigger1', {
schedule: '0 */5 * * * *',
return: output.eventHub({
eventHubName: 'myeventhub',
connection: 'MyEventHubSendAppSetting',
}),
handler: timerTrigger1,
});
Om du vill mata ut flera meddelanden returnerar du en matris i stället för ett enda objekt. Till exempel:
const timeStamp = new Date().toISOString();
const message = `Message created at: ${timeStamp}`;
return [`1: ${message}`, `2: ${message}`];
I följande exempel visas en timerutlöst JavaScript-funktion som skickar ett enda meddelande till en händelsehubb:
const { app, output } = require('@azure/functions');
const eventHubOutput = output.eventHub({
eventHubName: 'myeventhub',
connection: 'MyEventHubSendAppSetting',
});
app.timer('timerTrigger1', {
schedule: '0 */5 * * * *',
return: eventHubOutput,
handler: (myTimer, context) => {
const timeStamp = new Date().toISOString();
return `Message created at: ${timeStamp}`;
},
});
Om du vill mata ut flera meddelanden returnerar du en matris i stället för ett enda objekt. Till exempel:
const timeStamp = new Date().toISOString();
const message = `Message created at: ${timeStamp}`;
return [`1: ${message}`, `2: ${message}`];
Slutför PowerShell-exempel väntar.
I följande exempel visas en utlösarbindning för händelsehubben och en Python funktion som använder bindningen. Funktionen skriver ett meddelande till en händelsehubb. Exemplet beror på om du använder programmeringsmodellen v1 eller v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="eventhub_output")
@app.route(route="eventhub_output")
@app.event_hub_output(arg_name="event",
event_hub_name="<EVENT_HUB_NAME>",
connection="<CONNECTION_SETTING>")
def eventhub_output(req: func.HttpRequest, event: func.Out[str]):
body = req.get_body()
if body is not None:
event.set(body.decode('utf-8'))
else:
logging.info('req body is none')
return 'ok'
Här är Python kod som skickar flera meddelanden:
import logging
import azure.functions as func
from typing import List
app = func.FunctionApp()
@app.function_name(name="eventhub_output")
@app.route(route="eventhub_output")
@app.event_hub_output(arg_name="event",
event_hub_name="<EVENT_HUB_NAME>",
connection="<CONNECTION_SETTING>")
def eventhub_output(req: func.HttpRequest, event: func.Out[List[str]]) -> func.HttpResponse:
my_messages=["message1", "message2","message3"]
event.set(my_messages)
return func.HttpResponse(f"Messages sent")
I följande exempel visas en Java funktion som skriver ett meddelande som innehåller den aktuella tiden till en händelsehubb.
@FunctionName("sendTime")
@EventHubOutput(name = "event", eventHubName = "samples-workitems", connection = "AzureEventHubConnection")
public String sendTime(
@TimerTrigger(name = "sendTimeTrigger", schedule = "0 */5 * * * *") String timerInfo) {
return LocalDateTime.now().toString();
}
I Java functions runtime library använder du @EventHubOutput-kommentaren på parametrar vars värde skulle publiceras till Event Hubs. Parametern ska vara av typen OutputBinding<T> , där T är en POJO eller någon intern Java typ.
Attribut
C#-bibliotek i både processprocess och isolerad arbetsprocess använder attribut för att konfigurera bindningen. C#-skriptet använder i stället en function.json konfigurationsfil enligt beskrivningen i C#-skriptguiden.
Använd [EventHubOutputAttribute] för att definiera en utdatabindning till en händelsehubb som stöder följande egenskaper.
| Parametrar | beskrivning |
|---|---|
| EventHubName | Namnet på händelsehubben. När händelsehubbens namn också finns i reťazec pripojenia åsidosätter det värdet den här egenskapen vid körning. |
| Anslutning | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Event Hubs. Mer information finns i Anslutningar. |
Dekoratörer
Applies endast till programmeringsmodellen Python v2.
För Python v2-funktioner som definierats med hjälp av en dekoratör stöds dessa egenskaper för event_hub_output:
| Fastighet | beskrivning |
|---|---|
arg_name |
Variabelnamnet som används i funktionskoden som representerar händelsen. |
event_hub_name |
namnet på händelsehubben. När händelsehubbens namn också finns i reťazec pripojenia åsidosätter det värdet den här egenskapen vid körning. |
connection |
Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Event Hubs. Mer information finns i Anslutningar. |
Information om Python funktioner som definieras med hjälp av function.json finns i avsnittet Configuration.
Kommentarer
I Java functions runtime library använder du EventHubOutput anteckning på parametrar vars värde skulle publiceras till Event Hubs. Följande inställningar stöds i kommentaren:
Konfiguration
Applies endast till programmeringsmodellen Python v1.
I följande tabell förklaras de egenskaper som du kan ange för objektet options som skickas output.eventHub() till metoden.
| Fastighet | beskrivning |
|---|---|
| eventHubName | Namnet på händelsehubben. När händelsehubbens namn också finns i reťazec pripojenia åsidosätter det värdet den här egenskapen vid körning. |
| samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Event Hubs. Mer information finns i Anslutningar. |
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen, som skiljer sig beroende på körningsversion.
| function.json egenskap | beskrivning |
|---|---|
| typ | Måste anges till eventHub. |
| riktning | Måste anges till out. Den här parametern anges automatiskt när du skapar bindningen i Azure portalen. |
| Namn | Variabelnamnet som används i funktionskoden som representerar händelsen. |
| eventHubName | Funktioner 2.x och senare. Namnet på händelsehubben. När händelsehubbens namn också finns i reťazec pripojenia åsidosätter det värdet den här egenskapen vid körning. |
| samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Event Hubs. Mer information finns i Anslutningar. |
När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values samlingen.
Förbrukning
Vilken parametertyp som stöds av Event Hubs-utdatabindningen beror på functions-körningsversionen, tilläggspaketversionen och den C#-modalitet som används.
När du vill att funktionen ska skriva en enskild händelse kan Event Hubs-utdatabindningen binda till följande typer:
| Typ | beskrivning |
|---|---|
string |
Händelsen som en sträng. Använd när händelsen är enkel text. |
byte[] |
Byte för händelsen. |
| JSON-serialiserbara typer | Ett objekt som representerar händelsen. Functions försöker serialisera en vanlig CLR-objekttyp (POCO) till JSON-data. |
När du vill att funktionen ska skriva flera händelser kan Event Hubs-utdatabindningen binda till följande typer:
| Typ | beskrivning |
|---|---|
T[] där T är en av de enskilda händelsetyperna |
En matris som innehåller flera händelser. Varje post representerar en händelse. |
För andra utdatascenarier skapar och använder du en EventHubProducerClient med andra typer från Azure. Messaging.EventHubs direkt. Se Register Azure-klienter för ett exempel på hur du använder beroendeinmatning för att skapa en klienttyp från Azure SDKs.
Det finns två alternativ för att mata ut ett Event Hubs-meddelande från en funktion med hjälp av EventHubOutput-kommentaren:
Returvärde: Genom att använda anteckningen på själva funktionen sparas funktionens returvärde som ett Event Hubs-meddelande.
Imperative: Om du vill ange meddelandevärdet explicit använder du anteckningen på en specifik parameter av typen
OutputBinding<T>, därTär en POJO eller någon intern Java typ. Med den här konfigurationen bevarar överföringen av ett värde tillsetValuemetoden värdet som ett Event Hubs-meddelande.
Slutför PowerShell-exempel väntar.
Det finns två alternativ för att mata ut ett Event Hubs-meddelande från en funktion:
Returvärde: Ange
nameegenskapen i function.json till$return. Med den här konfigurationen sparas funktionens returvärde som ett Event Hubs-meddelande.Imperativ: Skicka ett värde till den angivna metoden för parametern som deklarerats som en Out-typ . Värdet som skickas till
setsparas som ett Event Hubs-meddelande.
Utdatafunktionsparametern måste definieras som func.Out[func.EventHubEvent] eller func.Out[List[func.EventHubEvent]]. Mer information finns i utdataexemplet .
anslutningar
Egenskapen connection är inställd på en nyckel i applikationsinställningarna som returnerar ett värde som används av Functions-runtimen för att ansluta till Event Hubs-namnrymden som innehåller händelsehubben som används av tillägget. Värdet på anslutningsegenskapsinställningen beror på typen av anslutning:
-
Managed identity-anslutning: Egenskapen
connection<CONNECTION_NAME_PREFIX>delas av en grupp inställningar som tillsammans definierar en identitetsbaserad anslutning till namnrymden. För mer information, se Definiera identitetskopplingar. -
Key Vault-referens: Egendomsinställningen
connectionreturnerar en Azure Key Vault-referens till platsen där reťazec pripojenia underhålls centralt. För mer information, se Definiera Key Vault-anslutningar. -
App Configuration Reference: Egenskapsinställningen
connectionreturnerar en Azure App Configuration-referens som returnerar en reťazec pripojenia eller en Key Vault-referens. För mer information, se Azure App Configuration i artikeln om anslutningar. -
Connection string: Egenskapsinställningen
connectionreturnerar den faktiska reťazec pripojenia för namnrymden. Connection string måste vara för ett Event Hubs-namnområde, inte själva händelsehubben. Eftersom reťazec pripojenia innehåller delade hemliga nycklar bör du överväga att använda en managed identity-anslutning när det är möjligt. För mer information, se Definiera kopplingar.
För att lära dig mer om bindningsanslutningar, se Hantera anslutning i Azure Functions.
För att lära dig hur du hämtar reťazec pripojenia för ditt Event Hubs-namnrymd, se Get an Event Hubs reťazec pripojenia.
Undantag och returkoder
| Bindning | Referens |
|---|---|
| Event Hubs | Driftguide |