Delen via


Berichten verzenden en ontvangen tussen Azure IoT MQ Preview en Azure Event Hubs of Kafka

Belangrijk

Azure IoT Operations Preview: ingeschakeld door Azure Arc is momenteel in PREVIEW. Gebruik deze preview-software niet in productieomgevingen.

Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.

De Kafka-connector pusht berichten van Azure IoT MQ Preview MQTT-broker naar een Kafka-eindpunt en haalt op dezelfde manier berichten op. Omdat Azure Event Hubs Kafka-API ondersteunt, werkt de connector standaard met Event Hubs.

Event Hubs-connector configureren via Kafka-eindpunt

De connector is standaard niet geïnstalleerd met Azure IoT MQ. Deze moet expliciet worden ingeschakeld met onderwerptoewijzing en verificatiereferenties opgegeven. Volg deze stappen om bidirectionele communicatie tussen IoT MQ en Azure Event Hubs mogelijk te maken via het Kafka-eindpunt.

  1. Maak een Event Hubs-naamruimte.

  2. Maak een Event Hub voor elk Kafka-onderwerp.

De connector toegang verlenen tot de Event Hubs-naamruimte

Het verlenen van ioT MQ Arc-extensietoegang tot een Event Hubs-naamruimte is de handigste manier om een beveiligde verbinding tot stand te brengen vanuit de Kakfa-connector van IoT MQ naar Event Hubs.

Sla de volgende Bicep-sjabloon op in een bestand en pas deze toe met de Azure CLI nadat u de geldige parameters voor uw omgeving hebt ingesteld:

Notitie

In de Bicep-sjabloon wordt ervan uitgegaan dat het arc-gekoppelde cluster en de Event Hubs-naamruimte zich in dezelfde resourcegroep bevinden, past u de sjabloon aan als uw omgeving anders is.

@description('Location for cloud resources')
param mqExtensionName string = 'mq'
param clusterName string = 'clusterName'
param eventHubNamespaceName string = 'default'

resource connectedCluster 'Microsoft.Kubernetes/connectedClusters@2021-10-01' existing = {
  name: clusterName
}

resource mqExtension 'Microsoft.KubernetesConfiguration/extensions@2022-11-01' existing = {
  name: mqExtensionName
  scope: connectedCluster
}

resource ehNamespace 'Microsoft.EventHub/namespaces@2021-11-01' existing = {
  name: eventHubNamespaceName
}

// Role assignment for Event Hubs Data Receiver role
resource roleAssignmentDataReceiver 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(ehNamespace.id, mqExtension.id, '7f951dda-4ed3-4680-a7ca-43fe172d538d')
  scope: ehNamespace
  properties: {
     // ID for Event Hubs Data Receiver role is a638d3c7-ab3a-418d-83e6-5f17a39d4fde
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', 'a638d3c7-ab3a-418d-83e6-5f17a39d4fde') 
    principalId: mqExtension.identity.principalId
    principalType: 'ServicePrincipal'
  }
}

// Role assignment for Event Hubs Data Sender role
resource roleAssignmentDataSender 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(ehNamespace.id, mqExtension.id, '69b88ce2-a752-421f-bd8b-e230189e1d63')
  scope: ehNamespace
  properties: {
    // ID for Event Hubs Data Sender role is 2b629674-e913-4c01-ae53-ef4638d8f975
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '2b629674-e913-4c01-ae53-ef4638d8f975') 
    principalId: mqExtension.identity.principalId
    principalType: 'ServicePrincipal'
  }
}
# Set the required environment variables

# Resource group for resources
RESOURCE_GROUP=xxx

# Bicep template files name
TEMPLATE_FILE_NAME=xxx

# MQ Arc extension name
MQ_EXTENSION_NAME=xxx

# Arc connected cluster name
CLUSTER_NAME=xxx

# Event Hubs namespace name
EVENTHUB_NAMESPACE=xxx


az deployment group create \
      --name assign-RBAC-roles \
      --resource-group $RESOURCE_GROUP \
      --template-file $TEMPLATE_FILE_NAME \
      --parameters mqExtensionName=$MQ_EXTENSION_NAME \
      --parameters clusterName=$CLUSTER_NAME \
      --parameters eventHubNamespaceName=$EVENTHUB_NAMESPACE

KafkaConnector

Met de aangepaste KafkaConnector-resource (CR) kunt u een Kafka-connector configureren die een Kafka-host en Event Hubs kan communiceren. De Kafka-connector kan gegevens overdragen tussen MQTT-onderwerpen en Kafka-onderwerpen, met behulp van Event Hubs als een kafka-compatibel eindpunt.

In het volgende voorbeeld ziet u een KafkaConnector CR die verbinding maakt met een Event Hubs-eindpunt met behulp van verschillende verificatietypen. Hierbij wordt ervan uitgegaan dat er andere MQ-resources zijn geïnstalleerd met behulp van de quickstart:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: KafkaConnector
metadata:
  name: my-eh-connector
  namespace: azure-iot-operations # same as one used for other MQ resources
spec:
  image:
    pullPolicy: IfNotPresent
    repository: mcr.microsoft.com/azureiotoperations/kafka
    tag: 0.4.0-preview
  instances: 2
  clientIdPrefix: my-prefix
  kafkaConnection:
    # Port 9093 is Event Hubs' Kakfa endpoint
    # Plug in your Event Hubs namespace name
    endpoint: <NAMESPACE>.servicebus.windows.net:9093
    tls:
      tlsEnabled: true
    authentication:
      enabled: true
      authType:
        systemAssignedManagedIdentity:
          # plugin in your Event Hubs namespace name
          audience: "https://<NAMESPACE>.servicebus.windows.net" 
  localBrokerConnection:
    endpoint: "aio-mq-dmqtt-frontend:8883"
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: "aio-ca-trust-bundle-test-only"
    authentication:
      kubernetes: {}

In de volgende tabel worden de velden in de aangepaste KafkaConnector-resource beschreven:

Veld Beschrijving Vereist
image De afbeelding van de Kafka-connector. U kunt de pullPolicyafbeelding repositoryen tag de afbeelding opgeven. Standaardwaarden worden weergegeven in het vorige voorbeeld. Ja
instanties Het aantal exemplaren van de Kafka-connector dat moet worden uitgevoerd. Ja
clientIdPrefix De tekenreeks die moet worden voorbereid op een client-id die door de connector wordt gebruikt. Nee
kafkaConnection De verbindingsgegevens van het Event Hubs-eindpunt. Zie Kafka-verbinding. Ja
localBrokerConnection De verbindingsgegevens van de lokale broker die de standaardbrokerverbinding overschrijft. Zie Lokale brokerverbinding beheren. Nee
logLevel Het logboekniveau van de Kafka-connector. Mogelijke waarden zijn: tracering, foutopsporing, informatie, waarschuwing, fout of onherstelbaar. De standaardwaarde wordt gewaarschuwd. Nee

Kafka-verbinding

Het kafkaConnection veld definieert de verbindingsgegevens van het Kafka-eindpunt.

Veld Beschrijving Vereist
endpoint De host en poort van het Event Hubs-eindpunt. De poort is doorgaans 9093. U kunt meerdere eindpunten opgeven, gescheiden door komma's om de syntaxis van bootstrapservers te gebruiken. Ja
tls De configuratie voor TLS-versleuteling. Zie TLS. Ja
verificatie De configuratie voor verificatie. Zie Verificatie. Nee

TLS

In tls het veld wordt TLS-versleuteling ingeschakeld voor de verbinding en wordt eventueel een CA-configuratietoewijzing opgegeven.

Veld Beschrijving Vereist
tlsEnabled Een Booleaanse waarde die aangeeft of TLS-versleuteling is ingeschakeld of niet. Deze moet worden ingesteld op waar voor Event Hubs-communicatie. Ja
trustedCaCertificateConfigMap De naam van de configuratietoewijzing die het CA-certificaat bevat voor het verifiëren van de identiteit van de server. Dit veld is niet vereist voor Event Hubs-communicatie, omdat Event Hubs gebruikmaakt van bekende CA's die standaard worden vertrouwd. U kunt dit veld echter gebruiken als u een aangepast CA-certificaat wilt gebruiken. Nee

Wanneer u een vertrouwde CA opgeeft, maakt u een ConfigMap met de openbare potion van de CA in PEM-indeling en geeft u de naam op in de trustedCaCertificateConfigMap eigenschap.

kubectl create configmap ca-pem --from-file path/to/ca.pem

Verificatie

Het verificatieveld ondersteunt verschillende typen verificatiemethoden, zoals SASL, X509 of beheerde identiteit.

Veld Beschrijving Vereist
enabled Een Booleaanse waarde die aangeeft of verificatie is ingeschakeld of niet. Ja
authType Een veld met het gebruikte verificatietype. Verificatietype weergeven Ja
Verificatietype
Veld Beschrijving Vereist
sasl De configuratie voor SASL-verificatie. Geef de saslType, die zonder opmaak, scramSha256 of scramSha512 kan zijn, en token om te verwijzen naar het KubernetessecretName- of Azure Key Vault-geheim keyVault met het wachtwoord. Ja, als u SASL-verificatie gebruikt
systemAssignedManagedIdentity De configuratie voor verificatie van beheerde identiteiten. Geef de doelgroep op voor de tokenaanvraag, die moet overeenkomen met de Event Hubs-naamruimte (https://<NAMESPACE>.servicebus.windows.net) omdat de connector een Kafka-client is. Er wordt automatisch een door het systeem toegewezen beheerde identiteit gemaakt en toegewezen aan de connector wanneer deze is ingeschakeld. Ja, als u verificatie van beheerde identiteiten gebruikt
x509 De configuratie voor X509-verificatie. Geef het secretName of keyVault veld op. Het secretName veld is de naam van het geheim dat het clientcertificaat en de clientsleutel in PEM-indeling bevat, opgeslagen als EEN TLS-geheim. Ja, als x509-verificatie wordt gebruikt

Zie Geheimen beheren met Behulp van Azure Key Vault of Kubernetes-geheimen voor meer informatie over het gebruik van Azure Key Vault en het keyVault beheren van geheimen voor Azure IoT MQ in plaats van Kubernetes-geheimen.

Verifiëren bij Event Hubs

Als u beheerde identiteit wilt gebruiken, geeft u deze op als de enige methode onder verificatie. U moet ook een rol toewijzen aan de beheerde identiteit die toestemming verleent voor het verzenden en ontvangen van berichten van Event Hubs, zoals Azure Event Hubs-gegevenseigenaar of Azure Event Hubs-gegevenszender/-ontvanger. Zie Een toepassing verifiëren met Microsoft Entra ID voor toegang tot Event Hubs-resources voor meer informatie.

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: KafkaConnector
metadata:
  name: my-eh-connector
  namespace: azure-iot-operations # same as one used for other MQ resources
spec:
  image:
    pullPolicy: IfNotPresent
    repository: mcr.microsoft.com/azureiotoperations/kafka
    tag: 0.4.0-preview
  instances: 2
  clientIdPrefix: my-prefix
  kafkaConnection:
    # Port 9093 is Event Hubs' Kakfa endpoint
    # Plug in your Event Hubs namespace name
    endpoint: <NAMESPACE>.servicebus.windows.net:9093
    tls:
      tlsEnabled: true
    authentication:
      enabled: true
      authType:
        systemAssignedManagedIdentity:
          # plugin in your Event Hubs namespace name
          audience: "https://<NAMESPACE>.servicebus.windows.net" 
  localBrokerConnection:
    endpoint: "aio-mq-dmqtt-frontend:8883"
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: "aio-ca-trust-bundle-test-only"
    authentication:
      kubernetes: {}

Lokale brokerverbinding beheren

Net als MQTT-brug fungeert de Event Hubs-connector als een client voor de IoT MQ MQTT-broker. Als u de listenerpoort en/of verificatie van uw IoT MQTT-broker hebt aangepast, overschrijft u ook de configuratie van de lokale MQTT-verbinding voor de Event Hubs-connector. Zie de lokale brokerverbinding van de MQTT-brug voor meer informatie.

KafkaConnectorTopicMap

Met de aangepaste Resource cr (KafkaConnectorTopicMap) kunt u de toewijzing tussen MQTT-onderwerpen en Kafka-onderwerpen definiëren voor bidirectionele gegevensoverdracht. Geef een verwijzing op naar een KafkaConnector CR en een lijst met routes. Elke route kan een MQTT naar Kafka-route of een Kafka naar MQTT-route zijn. Voorbeeld:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: KafkaConnectorTopicMap
metadata:
  name: my-eh-topic-map
  namespace: <SAME NAMESPACE AS BROKER> # For example "default"
spec:
  kafkaConnectorRef: my-eh-connector
  compression: none
  batching:
    enabled: true
    latencyMs: 1000
    maxMessages: 100
    maxBytes: 1024
  partitionStrategy: property
  partitionKeyProperty: device-id
  copyMqttProperties: true
  routes:
    # Subscribe from MQTT topic "temperature-alerts/#" and send to Kafka topic "receiving-event-hub"
    - mqttToKafka:
        name: "route1"
        mqttTopic: temperature-alerts/#
        kafkaTopic: receiving-event-hub
        kafkaAcks: one
        qos: 1
        sharedSubscription:
          groupName: group1
          groupMinimumShareNumber: 3
    # Pull from kafka topic "sending-event-hub" and publish to MQTT topic "heater-commands"
    - kafkaToMqtt:
        name: "route2"
        consumerGroupId: mqConnector
        kafkaTopic: sending-event-hub
        mqttTopic: heater-commands
        qos: 0

In de volgende tabel worden de velden in kafkaConnectorTopicMap CR beschreven:

Veld Beschrijving Vereist
kafkaConnectorRef De naam van de KafkaConnector CR waartoe deze onderwerptoewijzing behoort. Ja
compressie De configuratie voor compressie voor de berichten die naar Kafka-onderwerpen worden verzonden. Zie Compressie. Nee
Batching De configuratie voor batchverwerking voor de berichten die naar Kafka-onderwerpen worden verzonden. Zie Batching. Nee
partitionStrategy De strategie voor het verwerken van Kafka-partities bij het verzenden van berichten naar Kafka-onderwerpen. Zie de strategie voor het afhandelen van partities. Nee
copyMqttProperties Booleaanse waarde om te bepalen of MQTT-systeem- en gebruikerseigenschappen worden gekopieerd naar de Kafka-berichtkop. Gebruikerseigenschappen worden als zodanig gekopieerd. Er wordt een transformatie uitgevoerd met systeemeigenschappen. De standaardwaarde is onwaar. Nee
Routes Een lijst met routes voor gegevensoverdracht tussen MQTT-onderwerpen en Kafka-onderwerpen. Elke route kan een mqttToKafka of een kafkaToMqtt veld hebben, afhankelijk van de richting van gegevensoverdracht. Zie Routes. Ja

Compressie

Het compressieveld maakt compressie mogelijk voor de berichten die naar Kafka-onderwerpen worden verzonden. Compressie helpt de netwerkbandbreedte en opslagruimte te verminderen die nodig is voor gegevensoverdracht. Compressie voegt echter ook enige overhead en latentie toe aan het proces. De waarden en ondersteuning voor compressietypen worden vermeld in de volgende tabel.

Weergegeven als Beschrijving Ondersteund
Geen Er wordt geen compressie of batchverwerking toegepast. geen is de standaardwaarde als er geen compressie is opgegeven. Ja
gzip GZIP-compressie en batchverwerking worden toegepast. GZIP is een algoritme voor algemene compressie dat een goede balans biedt tussen de compressieverhouding en snelheid. Ja. De Prijscategorie Event Hubs Premium is vereist voor GZIP-compressie.
bits Snappy-compressie en batchverwerking worden toegepast. Snappy is een snel compressiealgoritme dat gemiddelde compressieverhouding en snelheid biedt. Niet ondersteund door Azure Event Hubs. Gebruik Apache Kafka.
lz4 LZ4-compressie en batchverwerking worden toegepast. LZ4 is een snel compressiealgoritme dat lage compressieverhouding en hoge snelheid biedt. Niet ondersteund door Azure Event Hubs. Gebruik Apache Kafka.

Batching

Naast compressie kunt u ook batchverwerking configureren voor berichten voordat u ze naar Kafka-onderwerpen verzendt. Met batchverwerking kunt u meerdere berichten groeperen en comprimeren als één eenheid, waardoor de compressieefficiëntie kan worden verbeterd en de netwerkoverhead wordt verminderd.

Veld Beschrijving Vereist
enabled Een Booleaanse waarde die aangeeft of batchverwerking is ingeschakeld of niet. Als deze niet is ingesteld, is de standaardwaarde onwaar. Ja
latentiem's Het maximale tijdsinterval in milliseconden dat berichten kunnen worden gebufferd voordat ze worden verzonden. Als dit interval is bereikt, worden alle gebufferde berichten verzonden als een batch, ongeacht hoeveel of hoe groot ze zijn. Als deze niet is ingesteld, is de standaardwaarde 5. Nee
maxMessages Het maximum aantal berichten dat kan worden gebufferd voordat deze wordt verzonden. Als dit aantal is bereikt, worden alle gebufferde berichten verzonden als een batch, ongeacht hoe groot ze zijn of hoe lang ze worden gebufferd. Als deze niet is ingesteld, is de standaardwaarde 100000. Nee
maxBytes De maximale grootte in bytes die kunnen worden gebufferd voordat ze worden verzonden. Als deze grootte is bereikt, worden alle gebufferde berichten verzonden als een batch, ongeacht hoeveel ze zijn of hoe lang ze worden gebufferd. De standaardwaarde is 10000000 (1 MB). Nee

Een voorbeeld van het gebruik van batchverwerking is:

batching:
  enabled: true
  latencyMs: 1000
  maxMessages: 100
  maxBytes: 1024

Dit betekent dat berichten worden verzonden wanneer er 100 berichten in de buffer staan, of wanneer er 1024 bytes in de buffer zijn, of wanneer er 1000 milliseconden zijn verstreken sinds de laatste verzending, afhankelijk van wat het eerst gebeurt.

Strategie voor het afhandelen van partities

De strategie voor het afhandelen van partities is een functie waarmee u kunt bepalen hoe berichten worden toegewezen aan Kafka-partities wanneer ze naar Kafka-onderwerpen worden verzonden. Kafka-partities zijn logische segmenten van een Kafka-onderwerp dat parallelle verwerking en fouttolerantie mogelijk maakt. Elk bericht in een Kafka-onderwerp heeft een partitie en een offset die wordt gebruikt om de berichten te identificeren en te rangschikken.

De Kafka-connector wijst standaard berichten toe aan willekeurige partities met behulp van een round robin-algoritme. U kunt echter verschillende strategieën gebruiken om berichten toe te wijzen aan partities op basis van bepaalde criteria, zoals de MQTT-onderwerpnaam of een MQTT-berichteigenschap. Dit kan u helpen om een betere taakverdeling, gegevenslocatie of berichtvolgorde te bereiken.

Weergegeven als Beschrijving
default Hiermee worden berichten toegewezen aan willekeurige partities met behulp van een round robin-algoritme. Dit is de standaardwaarde als er geen strategie is opgegeven.
statisch Hiermee worden berichten toegewezen aan een vast partitienummer dat is afgeleid van de exemplaar-id van de connector. Dit betekent dat elk connectorexemplaren berichten naar een andere partitie verzendt. Dit kan helpen om betere taakverdeling en gegevenslocatie te bereiken.
onderwerp Gebruikt de MQTT-onderwerpnaam als de sleutel voor partitionering. Dit betekent dat berichten met dezelfde MQTT-onderwerpnaam naar dezelfde partitie worden verzonden. Dit kan helpen om een betere volgorde van berichten en gegevenslocatie te bereiken.
eigenschap Gebruikt een MQTT-berichteigenschap als de sleutel voor partitionering. Geef de naam van de eigenschap in het partitionKeyProperty veld op. Dit betekent dat berichten met dezelfde eigenschapswaarde naar dezelfde partitie worden verzonden. Dit kan helpen om een betere volgorde van berichten en gegevenslocatie te bereiken op basis van een aangepast criterium.

Een voorbeeld van het gebruik van een strategie voor het afhandelen van partities is:

partitionStrategy: property
partitionKeyProperty: device-id

Dit betekent dat berichten met dezelfde eigenschap apparaat-id naar dezelfde partitie worden verzonden.

Routes

Het veld Routes definieert een lijst met routes voor gegevensoverdracht tussen MQTT-onderwerpen en Kafka-onderwerpen. Elke route kan een mqttToKafka of een kafkaToMqtt veld hebben, afhankelijk van de richting van gegevensoverdracht.

MQTT naar Kafka

Het mqttToKafka veld definieert een route waarmee gegevens van een MQTT-onderwerp worden overgedragen naar een Kafka-onderwerp.

Veld Beschrijving Vereist
naam Unieke naam voor de route. Ja
mqttTopic Het MQTT-onderwerp waaruit u zich wilt abonneren. U kunt jokertekens (# en +) gebruiken om meerdere onderwerpen te vinden. Ja
kafkaTopic Het Kafka-onderwerp naartoe te verzenden. Ja
kafkaAcks Het aantal bevestigingen dat de connector vereist van het Kafka-eindpunt. Mogelijke waarden zijn: zero , oneof all. Nee
QoS Het QoS-niveau (Quality of Service) voor het MQTT-onderwerpabonnement. Mogelijke waarden zijn: 0 of 1 (standaard). QoS 2 wordt momenteel niet ondersteund. Ja
sharedSubscription De configuratie voor het gebruik van gedeelde abonnementen voor MQTT-onderwerpen. Geef de groupName, die een unieke id is voor een groep abonnees, en het groupMinimumShareNumber, het aantal abonnees in een groep dat berichten van een onderwerp ontvangt. Als groupName bijvoorbeeld groupName 'group1' is en groupMinimumShareNumber 3 is, maakt de connector drie abonnees met dezelfde groepsnaam om berichten van een onderwerp te ontvangen. Met deze functie kunt u berichten tussen meerdere abonnees distribueren zonder dat u berichten kwijtraakt of duplicaten maakt. Nee

Een voorbeeld van het gebruik mqttToKafka van route:

mqttToKafka:
  mqttTopic: temperature-alerts/#
  kafkaTopic: receiving-event-hub
  kafkaAcks: one
  qos: 1
  sharedSubscription:
    groupName: group1
    groupMinimumShareNumber: 3

In dit voorbeeld worden berichten van MQTT-onderwerpen die overeenkomen met temperatuurwaarschuwingen/# verzonden naar kafka-onderwerp met QoS-equivalent 1 en gedeelde abonnementsgroep 'group1' met deelnummer 3.

Kafka naar MQTT

Het kafkaToMqtt veld definieert een route waarmee gegevens van een Kafka-onderwerp worden overgedragen naar een MQTT-onderwerp.

Veld Beschrijving Vereist
naam Unieke naam voor de route. Ja
kafkaTopic Het Kafka-onderwerp waaruit moet worden opgehaald. Ja
mqttTopic Het MQTT-onderwerp waar u naar wilt publiceren. Ja
consumerGroupId Het voorvoegsel van de consumentengroep-id voor elke Kafka naar MQTT-route. Als deze niet is ingesteld, wordt de id van de consumentengroep ingesteld op hetzelfde als de routenaam. Nee
QoS Het QoS-niveau (Quality of Service) voor de berichten die zijn gepubliceerd naar het MQTT-onderwerp. Mogelijke waarden zijn 0 of 1 (standaard). QoS 2 wordt momenteel niet ondersteund. Als QoS is ingesteld op 1, publiceert de connector het bericht naar het MQTT-onderwerp en wacht vervolgens op de ack voordat het bericht weer naar Kafka wordt doorgevoerd. Voor QoS 0 wordt de connector onmiddellijk teruggezet zonder MQTT ack. Nee

Een voorbeeld van het gebruik kafkaToMqtt van route:

kafkaToMqtt:
  kafkaTopic: sending-event-hub
  mqttTopic: heater-commands
  qos: 0

In dit voorbeeld worden berichten van Kafka-onderwerp verzenden-event-hub gepubliceerd naar MQTT-onderwerpverwarmers-opdrachten met QoS-niveau 0.

Event Hub-naam moet overeenkomen met kafka-onderwerp

Elke afzonderlijke Event Hub moet niet de naamruimte exact hetzelfde zijn als het beoogde Kafka-onderwerp dat is opgegeven in de routes. De verbindingsreeks EntityPath moet ook overeenkomen als verbindingsreeks is gericht op één Event Hub. Deze vereiste is omdat de Event Hubs-naamruimte vergelijkbaar is met het Kafka-cluster en de event hub-naam vergelijkbaar is met een Kafka-onderwerp, zodat de naam van het Kafka-onderwerp moet overeenkomen met de naam van de Event Hub.

Verschuivingen van Kafka-consumentengroepen

Als de connector de verbinding verbreekt of wordt verwijderd en opnieuw wordt geïnstalleerd met dezelfde Kafka-consumentengroep-id, wordt de verschuiving van de consumentengroep (de laatste positie van waar kafka-consumenten-leesberichten zijn opgeslagen) opgeslagen in Azure Event Hubs. Zie Event Hubs-consumentengroep versus Kafka-consumentengroep voor meer informatie.

MQTT-versie

Deze connector maakt alleen gebruik van MQTT v5.

MQTT-berichten publiceren en abonneren met behulp van Azure IoT MQ Preview