Konfigurera Azure Event Hubs- och Kafka-dataflödesslutpunkter
Viktigt!
Den här sidan innehåller instruktioner för att hantera Azure IoT Operations-komponenter med hjälp av Kubernetes-distributionsmanifest, som finns i förhandsversion. Den här funktionen har flera begränsningar och bör inte användas för produktionsarbetsbelastningar.
Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Om du vill konfigurera dubbelriktad kommunikation mellan Azure IoT Operations och Apache Kafka-koordinatorer kan du konfigurera en dataflödesslutpunkt. Med den här konfigurationen kan du ange slutpunkten, TLS (Transport Layer Security), autentisering och andra inställningar.
Förutsättningar
- En instans av Azure IoT Operations
Azure Event Hubs
Azure Event Hubs är kompatibelt med Kafka-protokollet och kan användas med dataflöden med vissa begränsningar.
Skapa en Azure Event Hubs-namnrymd och händelsehubb
Skapa först ett Kafka-aktiverat Azure Event Hubs-namnområde
Skapa sedan en händelsehubb i namnområdet. Varje enskild händelsehubb motsvarar ett Kafka-ämne. Du kan skapa flera händelsehubbar i samma namnområde för att representera flera Kafka-ämnen.
Tilldela behörighet till hanterad identitet
För att konfigurera en dataflödesslutpunkt för Azure Event Hubs rekommenderar vi att du använder antingen en användartilldelad eller systemtilldelad hanterad identitet. Den här metoden är säker och eliminerar behovet av att hantera autentiseringsuppgifter manuellt.
När Azure Event Hubs-namnområdet och händelsehubben har skapats måste du tilldela en roll till den hanterade Identiteten för Azure IoT Operations som ger behörighet att skicka eller ta emot meddelanden till händelsehubben.
Om du använder systemtilldelad hanterad identitet går du till din Azure IoT Operations-instans i Azure Portal och väljer Översikt. Kopiera namnet på tillägget som visas efter Azure IoT Operations Arc-tillägget. Till exempel azure-iot-operations-xxxx7. Du hittar din systemtilldelade hanterade identitet med samma namn som Azure IoT Operations Arc-tillägget.
Gå sedan till Event Hubs-namnrymdens >åtkomstkontroll (IAM)>Lägg till rolltilldelning.
- På fliken Roll väljer du en lämplig roll som
Azure Event Hubs Data Sender
ellerAzure Event Hubs Data Receiver
. Detta ger den hanterade identiteten de behörigheter som krävs för att skicka eller ta emot meddelanden för alla händelsehubbar i namnområdet. Mer information finns i Autentisera ett program med Microsoft Entra-ID för åtkomst till Event Hubs-resurser. - På fliken Medlemmar :
- Om du använder systemtilldelad hanterad identitet för Tilldela åtkomst till väljer du Alternativet Användare, grupp eller tjänstens huvudnamn . Välj sedan + Välj medlemmar och sök efter namnet på Azure IoT Operations Arc-tillägget.
- Om du använder användartilldelad hanterad identitet för Tilldela åtkomst till väljer du alternativet Hanterad identitet och väljer sedan + Välj medlemmar och söker efter din användartilldelade hanterade identitet som konfigurerats för molnanslutningar.
Skapa dataflödesslutpunkt för Azure Event Hubs
När Azure Event Hubs-namnområdet och händelsehubben har konfigurerats kan du skapa en dataflödesslutpunkt för det Kafka-aktiverade Azure Event Hubs-namnområdet.
Under Skapa ny dataflödesslutpunkt väljer du Azure Event Hubs>New.
Ange följande inställningar för slutpunkten:
Inställning Description Name Namnet på dataflödesslutpunkten. Host Värdnamnet för Kafka-mäklaren i formatet <NAMESPACE>.servicebus.windows.net:9093
. Inkludera portnummer9093
i värdinställningen för Event Hubs.Autentiseringsmetod Den metod som används för autentisering. Vi rekommenderar att du väljer Systemtilldelad hanterad identitet eller Användartilldelad hanterad identitet. Välj Använd för att etablera slutpunkten.
Kommentar
Kafka-ämnet, eller en enskild händelsehubb, konfigureras senare när du skapar dataflödet. Kafka-ämnet är målet för dataflödesmeddelandena.
Använda anslutningssträng för autentisering till Event Hubs
Viktigt!
Om du vill använda operations experience-portalen för att hantera hemligheter måste Azure IoT Operations först aktiveras med säkra inställningar genom att konfigurera ett Azure Key Vault och aktivera arbetsbelastningsidentiteter. Mer information finns i Aktivera säkra inställningar i Azure IoT Operations-distribution.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Grundläggande och väljer sedan Autentiseringsmetod>SASL.
Ange följande inställningar för slutpunkten:
Inställning | beskrivning |
---|---|
SASL-typ | Välj Plain . |
Namn på synkroniserad hemlighet | Ange ett namn på Kubernetes-hemligheten som innehåller anslutningssträng. |
Användarnamnsreferens eller tokenhemlighet | Referensen till användarnamnet eller tokenhemligheten som används för SASL-autentisering. Välj den från Key Vault-listan eller skapa en ny. Värdet måste vara $ConnectionString . |
Lösenordsreferens för tokenhemlighet | Referensen till lösenordet eller tokenhemligheten som används för SASL-autentisering. Välj den från Key Vault-listan eller skapa en ny. Värdet måste vara i formatet Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY-NAME>;SharedAccessKey=<KEY> . |
När du har valt Lägg till referens anger du följande inställningar om du väljer Skapa ny:
Inställning | beskrivning |
---|---|
Hemligt namn | Namnet på hemligheten i Azure Key Vault. Välj ett namn som är lätt att komma ihåg för att välja hemligheten senare i listan. |
Hemligt värde | För användarnamnet anger du $ConnectionString . För lösenordet anger du anslutningssträng i formatet Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY-NAME>;SharedAccessKey=<KEY> . |
Ange aktiveringsdatum | Om den är aktiverad blir det datum då hemligheten aktiveras. |
Ange förfallodatum | Om den är aktiverad upphör det datum då hemligheten upphör att gälla. |
Mer information om hemligheter finns i Skapa och hantera hemligheter i Azure IoT Operations.
Begränsningar
Azure Event Hubs stöder inte alla komprimeringstyper som Kafka stöder. Endast GZIP-komprimering stöds i Azure Event Hubs premium- och dedikerade nivåer för närvarande. Om du använder andra komprimeringstyper kan det leda till fel.
Anpassade Kafka-mäklare
Om du vill konfigurera en dataflödesslutpunkt för kafka-mäklare som inte är händelsehubb anger du värden, TLS, autentisering och andra inställningar efter behov.
Under Skapa ny dataflödesslutpunkt väljer du Anpassad Kafka Broker>Ny.
Ange följande inställningar för slutpunkten:
Inställning Description Name Namnet på dataflödesslutpunkten. Host Värdnamnet för Kafka-mäklaren i formatet <Kafka-broker-host>:xxxx
. Inkludera portnummer i värdinställningen.Autentiseringsmetod Den metod som används för autentisering. Välj SASL. SASL-typ Typen av SASL-autentisering. Välj Plain, ScramSha256 eller ScramSha512. Krävs om du använder SASL. Namn på synkroniserad hemlighet Namnet på hemligheten. Krävs om du använder SASL. Användarnamnsreferens för tokenhemlighet Referensen till användarnamnet i SASL-tokenhemligheten. Krävs om du använder SASL. Välj Använd för att etablera slutpunkten.
Kommentar
För närvarande stöder inte driftupplevelsen användning av en Kafka-dataflödesslutpunkt som källa. Du kan skapa ett dataflöde med en Kafka-källslutpunkt för dataflöden med Kubernetes eller Bicep.
Om du vill anpassa slutpunktsinställningarna använder du följande avsnitt för mer information.
Tillgängliga autentiseringsmetoder
Följande autentiseringsmetoder är tillgängliga för Kafka-asynkrona dataflödesslutpunkter.
Systemtilldelad hanterad identitet
Innan du konfigurerar dataflödesslutpunkten tilldelar du en roll till den hanterade Azure IoT Operations-identiteten som ger behörighet att ansluta till Kafka-koordinatorn:
- I Azure Portal går du till din Azure IoT Operations-instans och väljer Översikt.
- Kopiera namnet på tillägget som visas efter Azure IoT Operations Arc-tillägget. Till exempel azure-iot-operations-xxxx7.
- Gå till den molnresurs som du behöver för att bevilja behörigheter. Gå till exempel till Event Hubs-namnrymdens >åtkomstkontroll (IAM)>Lägg till rolltilldelning.
- På fliken Roll väljer du en lämplig roll.
- På fliken Medlemmar för Tilldela åtkomst till väljer du Alternativet Användare, grupp eller tjänstens huvudnamn och väljer sedan + Välj medlemmar och söker efter den hanterade Identiteten för Azure IoT Operations. Till exempel azure-iot-operations-xxxx7.
Konfigurera sedan dataflödesslutpunkten med systemtilldelade inställningar för hanterad identitet.
På sidan Inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Grundläggande och väljer sedan Autentiseringsmetod>Systemtilldelad hanterad identitet.
Den här konfigurationen skapar en hanterad identitet med standardpubliken, vilket är samma som värdvärdet för Event Hubs-namnområdet i form av https://<NAMESPACE>.servicebus.windows.net
. Men om du behöver åsidosätta standardpubliken audience
kan du ange fältet till önskat värde.
Stöds inte i driftupplevelsen.
Användartilldelad hanterad identitet
Om du vill använda användartilldelad hanterad identitet för autentisering måste du först distribuera Azure IoT-åtgärder med säkra inställningar aktiverade. Sedan måste du konfigurera en användartilldelad hanterad identitet för molnanslutningar. Mer information finns i Aktivera säkra inställningar i Azure IoT Operations-distribution.
Innan du konfigurerar dataflödesslutpunkten tilldelar du en roll till den användartilldelade hanterade identiteten som ger behörighet att ansluta till Kafka-koordinatorn:
- I Azure Portal går du till den molnresurs som du behöver för att bevilja behörigheter. Gå till exempel till Event Grid-namnrymdens >åtkomstkontroll (IAM)>Lägg till rolltilldelning.
- På fliken Roll väljer du en lämplig roll.
- På fliken Medlemmar för Tilldela åtkomst till väljer du alternativet Hanterad identitet och väljer sedan + Välj medlemmar och söker efter din användartilldelade hanterade identitet.
Konfigurera sedan dataflödesslutpunkten med användartilldelade hanterade identitetsinställningar.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Grundläggande och väljer sedan Autentiseringsmetod>Användartilldelad hanterad identitet.
Här är omfånget målgruppen för den hanterade identiteten. Standardvärdet är samma som värdvärdet för Event Hubs-namnområdet i form av https://<NAMESPACE>.servicebus.windows.net
. Men om du behöver åsidosätta standardpubliken kan du ange omfångsfältet till önskat värde med hjälp av Bicep eller Kubernetes.
SASL
Om du vill använda SASL för autentisering anger du SASL-autentiseringsmetoden och konfigurerar SASL-typen och en hemlig referens med namnet på hemligheten som innehåller SASL-token.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Grundläggande och väljer sedan Autentiseringsmetod>SASL.
Ange följande inställningar för slutpunkten:
Inställning | beskrivning |
---|---|
SASL-typ | Den typ av SASL-autentisering som ska användas. Typer som stöds är Plain , ScramSha256 och ScramSha512 . |
Namn på synkroniserad hemlighet | Namnet på Kubernetes-hemligheten som innehåller SASL-token. |
Användarnamnsreferens eller tokenhemlighet | Referensen till användarnamnet eller tokenhemligheten som används för SASL-autentisering. |
Lösenordsreferens för tokenhemlighet | Referensen till lösenordet eller tokenhemligheten som används för SASL-autentisering. |
De SASL-typer som stöds är:
Plain
ScramSha256
ScramSha512
Hemligheten måste finnas i samma namnområde som Kafka-dataflödesslutpunkten. Hemligheten måste ha SASL-token som ett nyckel/värde-par.
Anonym
Om du vill använda anonym autentisering uppdaterar du autentiseringsavsnittet i Kafka-inställningarna för att använda metoden Anonym.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Grundläggande och väljer sedan Autentiseringsmetod>Ingen.
Avancerade inställningar
Du kan ange avancerade inställningar för Kafka-dataflödesslutpunkten, till exempel TLS, betrott CA-certifikat, Kafka-meddelandeinställningar, batchbearbetning och CloudEvents. Du kan ange de här inställningarna på fliken Avancerad portal för dataflödesslutpunkt eller i dataflödesslutpunktsresursen.
I driftupplevelsen väljer du fliken Avancerat för dataflödesslutpunkten.
TLS-inställningar
TLS-läge
Om du vill aktivera eller inaktivera TLS för Kafka-slutpunkten uppdaterar mode
du inställningen i TLS-inställningarna.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan kryssrutan bredvid TLS-läget aktiverat.
TLS-läget kan ställas in på Enabled
eller Disabled
. Om läget är inställt på Enabled
använder dataflödet en säker anslutning till Kafka-koordinatorn. Om läget är inställt på Disabled
använder dataflödet en osäker anslutning till Kafka-koordinatorn.
Certifikat för betrodd certifikatutfärdare
Konfigurera det betrodda CA-certifikatet för Kafka-slutpunkten för att upprätta en säker anslutning till Kafka-koordinatorn. Den här inställningen är viktig om Kafka-koordinatorn använder ett självsignerat certifikat eller ett certifikat som signerats av en anpassad certifikatutfärdare som inte är betrodd som standard.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Betrott ca-certifikatkonfigurationsmappning för att ange ConfigMap som innehåller det betrodda CA-certifikatet.
Den här ConfigMap ska innehålla CA-certifikatet i PEM-format. ConfigMap måste finnas i samma namnområde som Kafka-dataflödesresursen. Till exempel:
kubectl create configmap client-ca-configmap --from-file root_ca.crt -n azure-iot-operations
Dricks
När du ansluter till Azure Event Hubs krävs inte CA-certifikatet eftersom Event Hubs-tjänsten använder ett certifikat som signerats av en offentlig certifikatutfärdare som är betrodd som standard.
Konsumentgrupp-ID
Konsumentgrupp-ID:t används för att identifiera den konsumentgrupp som dataflödet använder för att läsa meddelanden från Kafka-ämnet. Konsumentgrupp-ID:t måste vara unikt i Kafka-koordinatorn.
Viktigt!
När Kafka-slutpunkten används som källa krävs konsumentgruppens ID. Annars kan dataflödet inte läsa meddelanden från Kafka-ämnet och du får felmeddelandet "Källslutpunkter av Kafka-typ måste ha ett consumerGroupId definierat".
På sidan Inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Konsumentgrupp-ID för att ange konsumentgrupp-ID.
Den här inställningen börjar gälla endast om slutpunkten används som källa (det vill: dataflödet är en konsument).
Komprimering
Komprimeringsfältet möjliggör komprimering för meddelanden som skickas till Kafka-ämnen. Komprimering bidrar till att minska nätverksbandbredden och lagringsutrymmet som krävs för dataöverföring. Komprimering lägger dock också till en del omkostnader och svarstider i processen. Komprimeringstyperna som stöds visas i följande tabell.
Värde | beskrivning |
---|---|
None |
Ingen komprimering eller batchbearbetning tillämpas. Ingen är standardvärdet om ingen komprimering har angetts. |
Gzip |
GZIP-komprimering och batchbearbetning tillämpas. GZIP är en komprimeringsalgoritm för generell användning som ger en bra balans mellan komprimeringsförhållande och hastighet. Endast GZIP-komprimering stöds i Azure Event Hubs premium- och dedikerade nivåer för närvarande. |
Snappy |
Snabb komprimering och batchbearbetning tillämpas. Snappy är en snabb komprimeringsalgoritm som erbjuder måttligt komprimeringsförhållande och hastighet. Det här komprimeringsläget stöds inte av Azure Event Hubs. |
Lz4 |
LZ4-komprimering och batchbearbetning tillämpas. LZ4 är en snabb komprimeringsalgoritm som erbjuder lågt komprimeringsförhållande och hög hastighet. Det här komprimeringsläget stöds inte av Azure Event Hubs. |
Så här konfigurerar du komprimering:
På sidan inställningar för dataflödesslutpunkt för åtgärder väljer du fliken Avancerat och använder sedan fältet Komprimering för att ange komprimeringstypen.
Den här inställningen börjar gälla endast om slutpunkten används som ett mål där dataflödet är en producent.
Batchbearbetning
Förutom komprimering kan du även konfigurera batchbearbetning för meddelanden innan du skickar dem till Kafka-ämnen. Med batchbearbetning kan du gruppera flera meddelanden och komprimera dem som en enda enhet, vilket kan förbättra komprimeringseffektiviteten och minska nätverkskostnaderna.
Fält | beskrivning | Obligatoriskt |
---|---|---|
mode |
Det kan vara Enabled eller Disabled . Standardvärdet beror Enabled på att Kafka inte har någon uppfattning om ohbatchade meddelanden. Om det är inställt Disabled på minimeras batchbearbetningen för att skapa en batch med ett enda meddelande varje gång. |
Nej |
latencyMs |
Det maximala tidsintervallet i millisekunder som meddelanden kan buffras innan de skickas. Om det här intervallet nås skickas alla buffrade meddelanden som en batch, oavsett hur många eller hur stora de är. Om det inte anges är standardvärdet 5. | Nej |
maxMessages |
Det maximala antalet meddelanden som kan bufferas innan de skickas. Om det här talet nås skickas alla buffrade meddelanden som en batch, oavsett hur stora eller hur länge de buffras. Om det inte anges är standardvärdet 100000. | Nej |
maxBytes |
Den maximala storleken i byte som kan bufferas innan de skickas. Om den här storleken nås skickas alla buffrade meddelanden som en batch, oavsett hur många eller hur länge de buffras. Standardvärdet är 10000000 (1 MB). | Nej |
Om du till exempel anger svarstiderna 1 000, maxMessages till 100 och maxByte till 1 024 skickas meddelanden antingen när det finns 100 meddelanden i bufferten eller när det finns 1 024 byte i bufferten eller när 1 000 millisekunder förflutit sedan den senaste sändningen, beroende på vilket som kommer först.
Så här konfigurerar du batchbearbetning:
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Batchning aktiverat för att aktivera batchbearbetning. Använd fälten Batching latency, Maximum bytes och Message count (Antal meddelanden) för att ange batchinställningarna.
Den här inställningen börjar gälla endast om slutpunkten används som ett mål där dataflödet är en producent.
Strategi för partitionshantering
Strategin för partitionshantering styr hur meddelanden tilldelas till Kafka-partitioner när de skickas till Kafka-ämnen. Kafka-partitioner är logiska segment i ett Kafka-ämne som möjliggör parallell bearbetning och feltolerans. Varje meddelande i ett Kafka-ämne har en partition och en förskjutning som används för att identifiera och beställa meddelandena.
Den här inställningen börjar gälla endast om slutpunkten används som ett mål där dataflödet är en producent.
Som standard tilldelar ett dataflöde meddelanden till slumpmässiga partitioner med hjälp av en resursallokeringsalgoritm. Du kan dock använda olika strategier för att tilldela meddelanden till partitioner baserat på vissa kriterier, till exempel MQTT-ämnesnamnet eller en MQTT-meddelandeegenskap. Detta kan hjälpa dig att uppnå bättre belastningsutjämning, datalokalitet eller meddelandeordning.
Värde | beskrivning |
---|---|
Default |
Tilldelar meddelanden till slumpmässiga partitioner med hjälp av en resursallokeringsalgoritm. Det här är standardvärdet om ingen strategi har angetts. |
Static |
Tilldelar meddelanden till ett fast partitionsnummer som härleds från instans-ID:t för dataflödet. Det innebär att varje dataflödesinstans skickar meddelanden till en annan partition. Detta kan bidra till bättre belastningsutjämning och datalokalitet. |
Topic |
Använder MQTT-ämnesnamnet från dataflödeskällan som nyckel för partitionering. Det innebär att meddelanden med samma MQTT-ämnesnamn skickas till samma partition. Detta kan bidra till bättre meddelandeordning och datalokalitet. |
Property |
Använder en MQTT-meddelandeegenskap från dataflödeskällan som nyckel för partitionering. Ange namnet på egenskapen i fältet partitionKeyProperty . Det innebär att meddelanden med samma egenskapsvärde skickas till samma partition. Detta kan bidra till bättre meddelandeordning och datalokalitet baserat på ett anpassat kriterium. |
Om du till exempel anger partitionshanteringsstrategin till Property
och partitionsnyckelegenskapen till device-id
skickas meddelanden med samma device-id
egenskap till samma partition.
Så här konfigurerar du strategin för partitionshantering:
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Strategi för partitionshantering för att ange strategin för partitionshantering. Använd egenskapsfältet Partitionsnyckel för att ange den egenskap som används för partitionering om strategin är inställd på Property
.
Kafka-bekräftelser
Kafka-bekräftelser (acks) används för att styra hållbarheten och konsekvensen för meddelanden som skickas till Kafka-ämnen. När en producent skickar ett meddelande till ett Kafka-ämne kan den begära olika nivåer av bekräftelser från Kafka-koordinatorn för att säkerställa att meddelandet har skrivits till ämnet och replikerats över Kafka-klustret.
Den här inställningen börjar gälla endast om slutpunkten används som mål (det vill: dataflödet är en producent).
Värde | beskrivning |
---|---|
None |
Dataflödet väntar inte på några bekräftelser från Kafka-koordinatorn. Den här inställningen är det snabbaste men minst hållbara alternativet. |
All |
Dataflödet väntar på att meddelandet ska skrivas till ledarpartitionen och alla följepartitioner. Den här inställningen är det långsammaste men mest hållbara alternativet. Den här inställningen är också standardalternativet |
One |
Dataflödet väntar på att meddelandet ska skrivas till ledarpartitionen och minst en uppföljningspartition. |
Zero |
Dataflödet väntar på att meddelandet ska skrivas till ledarpartitionen men väntar inte på några bekräftelser från följare. Detta är snabbare än One men mindre beständigt. |
Om du till exempel anger Kafka-bekräftelsen till All
väntar dataflödet på att meddelandet ska skrivas till leaderpartitionen och alla efterföljande partitioner innan nästa meddelande skickas.
Så här konfigurerar du Kafka-bekräftelser:
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Kafka-bekräftelse för att ange kafka-bekräftelsenivån.
Den här inställningen börjar gälla endast om slutpunkten används som ett mål där dataflödet är en producent.
Kopiera MQTT-egenskaper
Som standard är inställningen kopiera MQTT-egenskaper aktiverad. Dessa användaregenskaper innehåller värden som som lagrar namnet på den tillgång som subject
skickar meddelandet.
På sidan Inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan kryssrutan bredvid fältet Kopiera MQTT-egenskaper för att aktivera eller inaktivera kopiering av MQTT-egenskaper.
I följande avsnitt beskrivs hur MQTT-egenskaper översätts till Kafka-användarhuvuden och vice versa när inställningen är aktiverad.
Kafka-slutpunkt är ett mål
När en Kafka-slutpunkt är ett dataflödesmål översätts alla MQTT v5-specifikationsdefinierade egenskaper till Kafka-användarhuvuden. Ett MQTT v5-meddelande med "Innehållstyp" som vidarebefordras till Kafka översätts till Kafka-användarrubriken "Content Type":{specifiedValue}
. Liknande regler gäller för andra inbyggda MQTT-egenskaper som definieras i följande tabell.
MQTT-egenskap | Översatt beteende |
---|---|
Indikator för nyttolastformat | Nyckel: "Indikator för nyttolastformat" Värde: "0" (nyttolasten är byte) eller "1" (nyttolasten är UTF-8) |
Svarsämne | Nyckel: "Svarsämne" Värde: Kopia av svarsämne från det ursprungliga meddelandet. |
Förfallointervall för meddelande | Nyckel: "Förfallointervall för meddelande" Värde: UTF-8-representation av antal sekunder innan meddelandet upphör att gälla. Mer information finns i egenskapen Förfallointervall för meddelande. |
Korrelationsdata: | Nyckel: "Korrelationsdata" Värde: Kopia av korrelationsdata från det ursprungliga meddelandet. Till skillnad från många MQTT v5-egenskaper som är UTF-8-kodade kan korrelationsdata vara godtyckliga data. |
Innehållstyp: | Nyckel: "Innehållstyp" Värde: Kopia av innehållstyp från det ursprungliga meddelandet. |
Nyckelvärdepar för MQTT v5-användaregenskap översätts direkt till Kafka-användarhuvuden. Om ett användarhuvud i ett meddelande har samma namn som en inbyggd MQTT-egenskap (till exempel en användarrubrik med namnet "Korrelationsdata") är vidarebefordran av egenskapsvärdet MQTT v5-specifikation eller användaregenskapen odefinierad.
Dataflöden får aldrig dessa egenskaper från en MQTT Broker. Därför vidarebefordrar ett dataflöde dem aldrig:
- Ämnesalias
- Prenumerationsidentifierare
Egenskapen Förfallointervall för meddelande
Intervallet för meddelandeförfallodatum anger hur länge ett meddelande kan finnas kvar i en MQTT-asynkron meddelandekö innan det tas bort.
När ett dataflöde tar emot ett MQTT-meddelande med angivet intervall för meddelandeförfallodatum:
- Registrerar den tid då meddelandet togs emot.
- Innan meddelandet skickas till målet subtraheras tiden från meddelandet har köats från den ursprungliga förfallointervalltiden.
- Om meddelandet inte har upphört att gälla (åtgärden ovan är > 0) skickas meddelandet till målet och innehåller den uppdaterade förfallotiden för meddelandet.
- Om meddelandet har upphört att gälla (åtgärden ovan är <= 0) genereras inte meddelandet av målet.
Exempel:
- Ett dataflöde tar emot ett MQTT-meddelande med intervall för meddelandeförfallotid = 3 600 sekunder. Motsvarande mål är tillfälligt frånkopplat men kan återansluta. 1 000 sekunder går innan MQTT-meddelandet skickas till målet. I det här fallet har målets meddelande dess intervall för meddelandeförfallotid inställt på 2 600 (3 600–1 000) sekunder.
- Dataflödet tar emot ett MQTT-meddelande med intervall för meddelandeförfallotid = 3 600 sekunder. Motsvarande mål är tillfälligt frånkopplat men kan återansluta. I det här fallet tar det dock 4 000 sekunder att återansluta. Meddelandet har upphört att gälla och dataflödet vidarebefordrar inte det här meddelandet till målet.
Kafka-slutpunkt är en dataflödeskälla
Kommentar
Det finns ett känt problem när du använder Event Hubs-slutpunkten som en dataflödeskälla där Kafka-huvudet skadas när det översätts till MQTT. Detta händer bara om du använder Event Hub via Event Hub-klienten som använder AMQP under täcket. Till exempel "foo"="bar" översätts "foo", men värdet blir"\xa1\x03bar".
När en Kafka-slutpunkt är en dataflödeskälla översätts Kafka-användarhuvuden till MQTT v5-egenskaper. I följande tabell beskrivs hur Kafka-användarhuvuden översätts till MQTT v5-egenskaper.
Kafka-rubrik | Översatt beteende |
---|---|
Nyckel | Nyckel: "Nyckel" Värde: Kopia av nyckeln från det ursprungliga meddelandet. |
Tidsstämpel | Nyckel: "Tidsstämpel" Värde: UTF-8-kodning av Kafka-tidsstämpel, vilket är antalet millisekunder sedan Unix-epoken. |
Nyckel-/värdepar för Kafka-användarhuvud – förutsatt att de alla är kodade i UTF-8 – översätts direkt till MQTT-egenskaper för användarnyckel/värde.
UTF-8/Binär matchningsfel
MQTT v5 kan bara stödja UTF-8-baserade egenskaper. Om dataflödet tar emot ett Kafka-meddelande som innehåller en eller flera icke-UTF-8-huvuden, kommer dataflödet att:
- Ta bort den felaktiga egenskapen eller egenskaperna.
- Vidarebefordra resten av meddelandet på genom att följa de tidigare reglerna.
Program som kräver binär överföring i Kafka-källhuvuden => MQTT-målegenskaper måste först KODa UTF-8 - till exempel via Base64.
>=64 KB egenskapsmatchningar
MQTT v5-egenskaper måste vara mindre än 64 KB. Om dataflödet tar emot ett Kafka-meddelande som innehåller en eller flera rubriker som är >= 64 KB, kommer dataflödet att:
- Ta bort den felaktiga egenskapen eller egenskaperna.
- Vidarebefordra resten av meddelandet på genom att följa de tidigare reglerna.
Egenskapsöversättning när du använder Event Hubs och producenter som använder AMQP
Om du har en klient som vidarebefordrar meddelanden utför en Kafka-dataflödeskälla någon av följande åtgärder:
- Skicka meddelanden till Event Hubs med hjälp av klientbibliotek som Azure.Messaging.EventHubs
- Använda AMQP direkt
Det finns egenskaper översättning nyanser att vara medveten om.
Du bör göra något av följande:
- Undvik att skicka egenskaper
- Om du måste skicka egenskaper skickar du värden som kodas som UTF-8.
När Event Hubs översätter egenskaper från AMQP till Kafka innehåller det de underliggande AMQP-kodade typerna i meddelandet. Mer information om beteendet finns i Utbyta händelser mellan konsumenter och producenter som använder olika protokoll.
I följande kodexempel när dataflödesslutpunkten tar emot värdet "foo":"bar"
tar den emot egenskapen som <0xA1 0x03 "bar">
.
using global::Azure.Messaging.EventHubs;
using global::Azure.Messaging.EventHubs.Producer;
var propertyEventBody = new BinaryData("payload");
var propertyEventData = new EventData(propertyEventBody)
{
Properties =
{
{"foo", "bar"},
}
};
var propertyEventAdded = eventBatch.TryAdd(propertyEventData);
await producerClient.SendAsync(eventBatch);
Dataflödesslutpunkten kan inte vidarebefordra nyttolastegenskapen <0xA1 0x03 "bar">
till ett MQTT-meddelande eftersom data inte är UTF-8. Men om du anger en UTF-8-sträng översätter dataflödesslutpunkten strängen innan den skickas till MQTT. Om du använder en UTF-8-sträng skulle MQTT-meddelandet ha "foo":"bar"
som användaregenskaper.
Endast UTF-8-huvuden översätts. Till exempel, med tanke på följande scenario där egenskapen anges som en flyttal:
Properties =
{
{"float-value", 11.9 },
}
Dataflödesslutpunkten tar bort paket som innehåller fältet "float-value"
.
Alla händelsedataegenskaper inklusive propertyEventData.correlationId vidarebefordras inte. Mer information finns i Egenskaper för händelseanvändare,
CloudEvents
CloudEvents är ett sätt att beskriva händelsedata på ett vanligt sätt. CloudEvents-inställningarna används för att skicka eller ta emot meddelanden i CloudEvents-format. Du kan använda CloudEvents för händelsedrivna arkitekturer där olika tjänster behöver kommunicera med varandra i samma eller olika molnleverantörer.
Alternativen CloudEventAttributes
är Propagate
ellerCreateOrRemap
.
På sidan inställningar för dataflödesslutpunkt för driftupplevelse väljer du fliken Avancerat och använder sedan fältet Molnhändelseattribut för att ange inställningen CloudEvents.
I följande avsnitt beskrivs hur CloudEvent-egenskaper sprids eller skapas och mappas om.
Spridningsinställning
CloudEvent-egenskaper skickas igenom för meddelanden som innehåller de egenskaper som krävs. Om meddelandet inte innehåller de nödvändiga egenskaperna skickas meddelandet som det är. Om de nödvändiga egenskaperna finns läggs ett ce_
prefix till i egenskapen CloudEvents egenskapsnamn.
Namn | Obligatoriskt | Exempelvärde | Utdatanamn | Utdatavärde |
---|---|---|---|---|
specversion |
Ja | 1.0 |
ce-specversion |
Passerat som det är |
type |
Ja | ms.aio.telemetry |
ce-type |
Passerat som det är |
source |
Ja | aio://mycluster/myoven |
ce-source |
Passerat som det är |
id |
Ja | A234-1234-1234 |
ce-id |
Passerat som det är |
subject |
Nej | aio/myoven/telemetry/temperature |
ce-subject |
Passerat som det är |
time |
Nej | 2018-04-05T17:31:00Z |
ce-time |
Passerat som det är. Det är inte restamped. |
datacontenttype |
Nej | application/json |
ce-datacontenttype |
Ändrades till innehållstypen för utdata efter den valfria transformeringsfasen. |
dataschema |
Nej | sr://fabrikam-schemas/123123123234234234234234#1.0.0 |
ce-dataschema |
Om ett datatransformeringsschema för utdata anges i transformeringskonfigurationen dataschema ändras det till utdataschemat. |
CreateOrRemap-inställning
CloudEvent-egenskaper skickas igenom för meddelanden som innehåller de egenskaper som krävs. Om meddelandet inte innehåller de egenskaper som krävs genereras egenskaperna.
Namn | Obligatoriskt | Utdatanamn | Genererat värde om det saknas |
---|---|---|---|
specversion |
Ja | ce-specversion |
1.0 |
type |
Ja | ce-type |
ms.aio-dataflow.telemetry |
source |
Ja | ce-source |
aio://<target-name> |
id |
Ja | ce-id |
Genererat UUID i målklienten |
subject |
Nej | ce-subject |
Utdataavsnittet där meddelandet skickas |
time |
Nej | ce-time |
Genereras som RFC 3339 i målklienten |
datacontenttype |
Nej | ce-datacontenttype |
Ändrades till utdatainnehållstypen efter den valfria transformeringsfasen |
dataschema |
Nej | ce-dataschema |
Schema definierat i schemaregistret |
Nästa steg
Mer information om dataflöden finns i Skapa ett dataflöde.