Aracılığıyla paylaş


Azure IoT MQ Preview ile Azure Event Hubs veya Kafka arasında ileti gönderme ve alma

Önemli

Azure Arc tarafından etkinleştirilen Azure IoT İşlemleri Önizlemesi şu anda ÖNİzLEME aşamasındadır. Bu önizleme yazılımını üretim ortamlarında kullanmamalısınız.

Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Kafka bağlayıcısı, Azure IoT MQ Preview MQTT aracısından kafka uç noktasına ileti göndermekte ve benzer şekilde iletileri başka bir yolla çekmektedir. Azure Event Hubs Kafka API'sini desteklediğinden bağlayıcı Event Hubs ile kullanıma hazır şekilde çalışır.

Kafka uç noktası aracılığıyla Event Hubs bağlayıcısı yapılandırma

Bağlayıcı varsayılan olarak Azure IoT MQ ile yüklenmez. Konu eşlemesi ve kimlik doğrulaması kimlik bilgileri belirtilen şekilde açıkça etkinleştirilmelidir. Kafka uç noktası üzerinden IoT MQ ile Azure Event Hubs arasında çift yönlü iletişimi etkinleştirmek için bu adımları izleyin.

  1. Event Hubs ad alanı oluşturun.

  2. Her Kafka konusu için bir olay hub'ı oluşturun.

Bağlayıcıya Event Hubs ad alanına erişim verme

Bir Event Hubs ad alanına IoT MQ Arc uzantısı erişimi vermek, IoT MQ'nun Kakfa bağlayıcısından Event Hubs'a güvenli bir bağlantı kurmanın en kolay yoludur.

Ortamınız için geçerli parametreleri ayarladıktan sonra aşağıdaki Bicep şablonunu bir dosyaya kaydedin ve Azure CLI ile uygulayın:

Not

Bicep şablonu Arc connnected kümesinin ve Event Hubs ad alanının aynı kaynak grubunda olduğunu varsayar ve ortamınız farklıysa şablonu ayarlayın.

@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

Kafka Bağlan or

Kafka Bağlan or özel kaynağı (CR), Kafka konağı ve Event Hubs ile iletişim kurabilen bir Kafka bağlayıcısı yapılandırmanıza olanak tanır. Kafka bağlayıcısı, Event Hubs'ı Kafka ile uyumlu bir uç nokta olarak kullanarak MQTT konularıyla Kafka konuları arasında veri aktarabilir.

Aşağıdaki örnekte IoT MQ'nun Azure kimliğini kullanarak Event Hubs uç noktasına bağlanan kafka Bağlan or CR gösterilmektedir ve hızlı başlangıç kullanılarak diğer MQ kaynaklarının yüklendiği varsayılır:

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: {}

Aşağıdaki tabloda Kafka Bağlan veya CR'deki alanlar açıklanmaktadır:

Alan Açıklama Gerekli
görüntü Kafka bağlayıcısının görüntüsü. Görüntünün , repositoryve tag değerini belirtebilirsinizpullPolicy. Varsayılan değerler önceki örnekte gösterilmiştir. Yes
örnekler Kafka bağlayıcısının çalıştırılacak örnek sayısı. Yes
clientIdPrefix Bağlayıcı tarafından kullanılan bir istemci kimliğine ön ekli dize. Hayır
kafka Bağlan ion Event Hubs uç noktasının bağlantı ayrıntıları. Bkz. Kafka Bağlan ion. Yes
localBroker Bağlan ion Varsayılan aracı bağlantısını geçersiz kılan yerel aracının bağlantı ayrıntıları. Bkz. Yerel aracı bağlantısını yönetme. Hayır
Loglevel Kafka bağlayıcısının günlük düzeyi. Olası değerler şunlardır: izleme, hata ayıklama, bilgi, uyarı, hata veya önemli. Varsayılan uyarıdır. Hayır

Kafka bağlantısı

alanı Kafka kafkaConnection uç noktasının bağlantı ayrıntılarını tanımlar.

Alan Açıklama Gerekli
endpoint Event Hubs uç noktasının ana bilgisayarı ve bağlantı noktası. Bağlantı noktası genellikle 9093'dür. Önyükleme sunucularının söz dizimlerini kullanmak için virgülle ayrılmış birden çok uç nokta belirtebilirsiniz. Yes
Tls TLS şifreleme yapılandırması. Bkz. TLS. Yes
kimlik doğrulaması Kimlik doğrulaması yapılandırması. Bkz. Kimlik doğrulaması. Hayır

TLS

alanı tls , bağlantı için TLS şifrelemesini etkinleştirir ve isteğe bağlı olarak bir CA yapılandırma eşlemesi belirtir.

Alan Açıklama Gerekli
tlsEnabled TLS şifrelemenin etkinleştirilip etkinleştirilmediğini gösteren boole değeri. Event Hubs iletişimi için true olarak ayarlanmalıdır. Yes
trustedCaCertificateConfigMap Sunucunun kimliğini doğrulamak için CA sertifikasını içeren yapılandırma eşlemesinin adı. Event Hubs varsayılan olarak güvenilen iyi bilinen CA'ları kullandığı için bu alan Event Hubs iletişimi için gerekli değildir. Ancak, özel CA sertifikası kullanmak istiyorsanız bu alanı kullanabilirsiniz. Hayır

Güvenilir bir CA belirtirken, PEM biçiminde CA'nın ortak iksirini içeren bir ConfigMap oluşturun ve özelliğinde trustedCaCertificateConfigMap adı belirtin.

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

Kimlik Doğrulaması

Kimlik doğrulama alanı SASL, X509 veya yönetilen kimlik gibi farklı kimlik doğrulama yöntemlerini destekler.

Alan Açıklama Gerekli
enabled Kimlik doğrulamasının etkinleştirilip etkinleştirilmediğini gösteren boole değeri. Yes
Authtype Kullanılan kimlik doğrulama türünü içeren bir alan. Bkz. Kimlik Doğrulama Türü
Kimlik Doğrulaması Türü
Alan Açıklama Gerekli
Sasl SASL kimlik doğrulaması yapılandırması. düz, scramSha256 veya scramSha512 tokenolabilecek ve parolayı içeren Kubernetes secretName veya Azure Key Vault keyVault gizli dizisine başvurmak için değerini belirtin. saslType Evet, SASL kimlik doğrulaması kullanılıyorsa
systemAssignedManagedIdentity Yönetilen kimlik kimlik doğrulaması yapılandırması. Bağlayıcı bir Kafka istemcisi olduğundan Event Hubs ad alanıyla (https://<NAMESPACE>.servicebus.windows.net) eşleşmesi gereken belirteç isteğinin hedef kitlesini belirtin. Sistem tarafından atanan yönetilen kimlik, etkinleştirildiğinde otomatik olarak oluşturulur ve bağlayıcıya atanır. Evet, yönetilen kimlik kimlik doğrulaması kullanılıyorsa
x509 X509 kimlik doğrulaması yapılandırması. secretName veya keyVault alanını belirtin. alanı secretName , istemci sertifikasını ve PEM biçimindeki istemci anahtarını içeren gizli anahtarın adıdır ve TLS gizli dizisi olarak depolanır. Evet, X509 kimlik doğrulaması kullanılıyorsa

Azure Key Vault'un nasıl kullanılacağını ve keyVault Kubernetes gizli dizileri yerine Azure IoT MQ gizli dizilerini yönetmeyi öğrenmek için bkz . Azure Key Vault veya Kubernetes gizli dizilerini kullanarak gizli dizileri yönetme.

Event Hubs'da kimlik doğrulaması

Event Hubs'a bağlantı dizesi ve Kubernetes gizli dizisi kullanarak bağlanmak için SASL türünü ve $ConnectionString kullanıcı adı olarak ve tam bağlantı dizesi parola olarak kullanınplain. İlk olarak Kubernetes gizli dizisini oluşturun:

kubectl create secret generic cs-secret -n azure-iot-operations \
  --from-literal=username='$ConnectionString' \
  --from-literal=password='Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY_NAME>;SharedAccessKey=<KEY>'

Ardından yapılandırmadaki gizli diziye başvurun:

authentication:
  enabled: true
  authType:
    sasl:
      saslType: plain
      token:
        secretName: cs-secret

Kubernetes gizli dizileri yerine Azure Key Vault'u kullanmak için bağlantı dizesi Endpoint=sb://..ile bir Azure Key Vault gizli dizisi oluşturun, ile bu gizli diziye vaultSecretbaşvurun ve kullanıcı adını yapılandırmada olduğu gibi "$ConnectionString" belirtin.

authentication:
  enabled: true
  authType:
    sasl:
      saslType: plain
      token:
        keyVault:
          username: "$ConnectionString"
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultSecret:
            name: my-cs # Endpoint=sb://..
            # version: 939ecc2...

Yönetilen kimliği kullanmak için kimlik doğrulaması altındaki tek yöntem olarak belirtin. Ayrıca Yönetilen kimliğe Azure Event Hubs Veri Sahibi veya Azure Event Hubs Veri Göndereni/Alıcısı gibi Event Hubs'dan ileti gönderme ve alma izni veren bir rol atamanız gerekir. Daha fazla bilgi edinmek için bkz . Event Hubs kaynaklarına erişmek için Microsoft Entra ID ile bir uygulamanın kimliğini doğrulama.

authentication:
  enabled: true
  authType:
    systemAssignedManagedIdentity:
      audience: https://<NAMESPACE>.servicebus.windows.net
X.509

X.509 için ortak sertifikayı ve özel anahtarı içeren Kubernetes TLS gizli dizisini kullanın.

kubectl create secret tls my-tls-secret -n azure-iot-operations \
  --cert=path/to/cert/file \
  --key=path/to/key/file

Ardından in yapılandırmasını belirtin secretName .

authentication:
  enabled: true
  authType:
    x509:
      secretName: my-tls-secret

Bunun yerine Azure Key Vault kullanmak için sertifikanın ve özel anahtarın düzgün bir şekilde içeri aktarıldığından emin olun ve ardından ile vaultCertbaşvuruyu belirtin.

authentication:
  enabled: true
  authType:
    x509:
      keyVault:
        vault:
          name: my-key-vault
          directoryId: <AKV directory ID>
          credentials:
            servicePrincipalLocalSecretName: aio-akv-sp
        vaultCert:
          name: my-cert
          # version: 939ecc2...
        ## If presenting full chain also  
        # vaultCaChainSecret:
        #   name: my-chain

Ya da tam zincirin sunulması gerekiyorsa, tam zincir sertifikasını ve anahtarını PFX dosyası olarak AKV'ye yükleyin ve bunun yerine alanını kullanın vaultCaChainSecret .

# ...
keyVault:
  vaultCaChainSecret:
    name: my-cert
    # version: 939ecc2...

Yerel aracı bağlantısını yönetme

MQTT köprüsü gibi Event Hubs bağlayıcısı da IoT MQ MQTT aracısı için bir istemci işlevi görür. IoT MQ MQTT aracınızın dinleyici bağlantı noktasını ve/veya kimlik doğrulamasını özelleştirdiyseniz Event Hubs bağlayıcısı için de yerel MQTT bağlantı yapılandırmasını geçersiz kılın. Daha fazla bilgi edinmek için bkz . MQTT köprüsü yerel aracı bağlantısı.

Kafka Bağlan orTopicMap

Kafka Bağlan orTopicMap özel kaynağı (CR), çift yönlü veri aktarımı için MQTT konuları ile Kafka konuları arasındaki eşlemeyi tanımlamanızı sağlar. Kafka Bağlan or CR'ye bir başvuru ve yolların listesini belirtin. Her yol bir MQTT-Kafka yolu veya Kafka - MQTT yolu olabilir. Örneğin:

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: snappy
  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

Aşağıdaki tabloda Kafka Bağlan orTopicMap CR'deki alanlar açıklanmaktadır:

Alan Açıklama Gerekli
kafka Bağlan orRef Bu konu haritasının ait olduğu Kafka Bağlan veya CR'nin adı. Yes
sıkıştırma Kafka konularına gönderilen iletiler için sıkıştırma yapılandırması. Bkz. Sıkıştırma. Hayır
toplu işleme Kafka konularına gönderilen iletiler için toplu işleme yapılandırması. Bkz. Toplu işlem. Hayır
partitionStrategy Kafka konularına ileti gönderirken Kafka bölümlerini işleme stratejisi. Bkz . Bölüm işleme stratejisi. Hayır
copyMqttProperties MQTT sistemi ve kullanıcı özelliklerinin Kafka ileti üst bilgisine kopyalanıp kopyalanmadığını denetlemek için Boole değeri. Kullanıcı özellikleri olduğu gibi kopyalanır. Bazı dönüştürmeler sistem özellikleriyle yapılır. Varsayılan değer false'tur. Hayır
yollar MQTT konuları ve Kafka konuları arasında veri aktarımı için yolların listesi. Veri aktarımının yönüne bağlı olarak her yolun bir mqttToKafka veya bir kafkaToMqtt alanı olabilir. Bkz. Yollar. Yes

Sıkıştırma

Sıkıştırma alanı Kafka konularına gönderilen iletiler için sıkıştırmayı etkinleştirir. Sıkıştırma, veri aktarımı için gereken ağ bant genişliğini ve depolama alanını azaltmaya yardımcı olur. Ancak sıkıştırma işlemine biraz ek yük ve gecikme de ekler. Desteklenen sıkıştırma türleri aşağıdaki tabloda listelenmiştir.

Value Açıklama
yok Sıkıştırma veya toplu işlem uygulanmaz. sıkıştırma belirtilmezse hiçbiri varsayılan değer değildir.
gzip GZIP sıkıştırma ve toplu işlem uygulanır. GZIP, sıkıştırma oranı ile hız arasında iyi bir denge sunan genel amaçlı bir sıkıştırma algoritmasıdır.
Çabuk Hızlı sıkıştırma ve toplu işlem uygulanır. Snappy, orta düzeyde sıkıştırma oranı ve hızı sunan hızlı bir sıkıştırma algoritmasıdır.
lz4 LZ4 sıkıştırma ve toplu işlem uygulanır. LZ4, düşük sıkıştırma oranı ve yüksek hız sunan hızlı bir sıkıştırma algoritmasıdır.

İşlem grubu oluşturma

Sıkıştırmanın yanı sıra, iletileri Kafka konularına göndermeden önce toplu işlemeyi de yapılandırabilirsiniz. Toplu işlem, birden çok iletiyi birlikte gruplandırmanıza ve tek bir birim olarak sıkıştırmanıza olanak tanır; bu da sıkıştırma verimliliğini artırabilir ve ağ ek yükünü azaltabilir.

Alan Açıklama Gerekli
enabled Toplu işlemin etkinleştirilip etkinleştirilmediğini gösteren boole değeri. Ayarlanmadıysa varsayılan değer false olur. Yes
gecikme süresiM'ler İletilerin gönderilmeden önce arabelleğe alınabileceği milisaniye cinsinden maksimum zaman aralığı. Bu süreye ulaşılırsa, arabelleğe alınan tüm iletiler, kaç veya ne kadar büyük olduklarına bakılmaksızın toplu iş olarak gönderilir. Ayarlanmadıysa, varsayılan değer 5'tir. Hayır
maxMessages Gönderilmeden önce arabelleğe alınabilecek en fazla ileti sayısı. Bu sayıya ulaşılırsa, arabelleğe alınan tüm iletiler, ne kadar büyük veya ne kadar arabelleğe alındıklarına bakılmaksızın toplu iş olarak gönderilir. Ayarlanmadıysa, varsayılan değer 100000'dir. Hayır
maxBytes Gönderilmeden önce arabelleğe alınabilecek bayt cinsinden en büyük boyut. Bu boyuta ulaşılırsa, arabelleğe alınan tüm iletiler, ne kadar veya ne kadar arabelleğe alındıklarına bakılmaksızın toplu olarak gönderilir. Varsayılan değer 1000000 'dir (1 MB). Hayır

Toplu işlem kullanmanın bir örneği:

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

Bu, iletilerin arabellekte 100 ileti olduğunda veya arabellekte 1024 bayt olduğunda veya son göndermeden sonra 1000 milisaniye geçtiğinde (hangisi önce gelirse) gönderilir.

Bölüm işleme stratejisi

Bölüm işleme stratejisi, iletileri Kafka konularına gönderirken Kafka bölümlerine nasıl atandığını denetlemenizi sağlayan bir özelliktir. Kafka bölümleri, kafka konusunun paralel işleme ve hataya dayanıklılık sağlayan mantıksal kesimleridir. Kafka konu başlığındaki her iletinin, iletileri tanımlamak ve sıralamak için kullanılan bir bölümü ve uzaklığı vardır.

Varsayılan olarak, Kafka bağlayıcısı iletileri hepsini bir kez deneme algoritması kullanarak rastgele bölümlere atar. Ancak, MQTT konu adı veya MQTT ileti özelliği gibi bazı ölçütlere göre bölümlere ileti atamak için farklı stratejiler kullanabilirsiniz. Bu, daha iyi yük dengeleme, veri yerelliği veya ileti sıralaması elde etmeye yardımcı olabilir.

Value Açıklama
varsayılan Hepsini bir kez deneme algoritması kullanarak iletileri rastgele bölümlere atar. Hiçbir strateji belirtilmezse, bu varsayılan değerdir.
static İletileri bağlayıcının örnek kimliğinden türetilen sabit bir bölüm numarasına atar. Bu, her bağlayıcı örneğinin farklı bir bölüme ileti gönderdiği anlamına gelir. Bu, daha iyi yük dengeleme ve veri konumu elde etmeye yardımcı olabilir.
topic Bölümleme anahtarı olarak MQTT konu adını kullanır. Bu, aynı MQTT konu adına sahip iletilerin aynı bölüme gönderileceği anlamına gelir. Bu, daha iyi ileti sıralama ve veri konumu elde etmeye yardımcı olabilir.
özellik Bölümleme anahtarı olarak bir MQTT ileti özelliği kullanır. Alandaki özelliğin partitionKeyProperty adını belirtin. Bu, aynı özellik değerine sahip iletilerin aynı bölüme gönderildiği anlamına gelir. Bu, özel bir ölçüte göre daha iyi ileti sıralama ve veri yerelliği elde etmeye yardımcı olabilir.

Bölüm işleme stratejisini kullanma örneği:

partitionStrategy: property
partitionKeyProperty: device-id

Bu, aynı cihaz kimliği özelliğine sahip iletilerin aynı bölüme gönderileceği anlamına gelir.

Rotalar

Yollar alanı, MQTT konuları ve Kafka konuları arasında veri aktarımı için yolların listesini tanımlar. Veri aktarımının yönüne bağlı olarak her yolun bir mqttToKafka veya bir kafkaToMqtt alanı olabilir.

MQTT'yi Kafka'ya

alanı, mqttToKafka bir MQTT konusundan Kafka konusuna veri aktaran bir yol tanımlar.

Alan Açıklama Gerekli
Adı Yol için benzersiz ad. Yes
mqttTopic Abone olunacak MQTT konusu. Birden çok konuyu eşleştirmek için joker karakterler (# ve +) kullanabilirsiniz. Yes
kafkaTopic Gönderilecek Kafka konusu. Yes
kafkaAcks Kafka uç noktasından bağlayıcının gerektirdiği bildirim sayısı. Olası değerler şunlardır: zero , oneveya all. Hayır
Qos MQTT konu aboneliği için hizmet kalitesi (QoS) düzeyi. Olası değerler şunlardır: 0 veya 1 (varsayılan). QoS 2 şu anda desteklenmiyor. Yes
sharedSubscription MQTT konuları için paylaşılan abonelikleri kullanma yapılandırması. groupNameBir abone grubu için benzersiz bir tanımlayıcı olan öğesini ve groupMinimumShareNumberbir gruptaki bir konu başlığından ileti alan abone sayısı olan değerini belirtin. Örneğin, groupName "group1" ve groupMinimumShareNumber 3 ise bağlayıcı, bir konudan ileti almak için aynı grup adına sahip üç abone oluşturur. Bu özellik, herhangi bir ileti kaybetmeden veya yinelenen iletiler oluşturmadan iletileri birden çok abone arasında dağıtmanıza olanak tanır. Hayır

Yol kullanma mqttToKafka örneği:

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

Bu örnekte, sıcaklık uyarıları/# ile eşleşen MQTT konu başlıklarından gelen iletiler QoS eşdeğeri 1 ve paylaşım numarası 3 olan paylaşılan abonelik grubu "group1" ile Kafka konu alma-olay hub'ına gönderilir.

Kafka-MQTT

alanı, kafkaToMqtt kafka konu başlığından MQTT konusuna veri aktaran bir yol tanımlar.

Alan Açıklama Gerekli
Adı Yol için benzersiz ad. Yes
kafkaTopic Çekecek Kafka konusu. Yes
mqttTopic Yayımlanması gereken MQTT konusu. Yes
consumerGroupId Her Kafka için MQTT yolu için tüketici grubu kimliğinin ön eki. Ayarlanmadıysa, tüketici grubu kimliği yol adıyla aynı olarak ayarlanır. Hayır
Qos MQTT konusunda yayımlanan iletiler için hizmet kalitesi (QoS) düzeyi. Olası değerler 0 veya 1'tir (varsayılan). QoS 2 şu anda desteklenmiyor. QoS 1 olarak ayarlanırsa, bağlayıcı iletiyi MQTT konusunda yayımlar ve ardından iletiyi Kafka'ya geri işlemeden önce sorunu bekler. QoS 0 için bağlayıcı, MQTT hatası olmadan hemen geri işler. Hayır

Yol kullanma kafkaToMqtt örneği:

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

Bu örnekte, Kafka konu başlığındaki sending-event-hub* iletileri QoS düzeyi 0 olan MQTT konu ısıtıcı komutlarında yayımlanır.

Olay hub'ı adı Kafka konusuyla eşleşmelidir

Ad alanı olmayan her olay hub'ı, yollarda belirtilen hedeflenen Kafka konusuyla tam olarak aynı şekilde adlandırılmalıdır. Ayrıca, bağlantı dizesi EntityPath kapsamı bir olay hub'ı olarak belirlenmişse bağlantı dizesi eşleşmelidir. Bunun nedeni Event Hubs ad alanının Kafka kümesine benzer olması ve olay hub'ı adının kafka konusuna benzer olmasıdır, dolayısıyla Kafka konu adının olay hub'ı adıyla eşleşmesi gerekir.

Kafka tüketici grubu uzaklıkları

Bağlayıcının bağlantısı kesilirse veya kaldırılıp aynı Kafka tüketici grubu kimliğiyle yeniden yüklenirse, tüketici grubu uzaklığı (Kafka tüketicisinin iletileri okuduğu son konum) Azure Event Hubs'da depolanır. Daha fazla bilgi edinmek için bkz . Event Hubs tüketici grubu ve Kafka tüketici grubu.

MQTT sürümü

Bu bağlayıcı yalnızca MQTT v5 kullanır.

Azure IoT MQ Preview kullanarak MQTT iletilerini yayımlama ve abone olma