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.
Event Hubs ad alanı oluşturun.
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 , repository ve 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 token olabilecek 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 vaultSecret
baş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 vaultCert
baş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 , one veya 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ı. groupName Bir abone grubu için benzersiz bir tanımlayıcı olan öğesini ve groupMinimumShareNumber bir 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.
İlgili içerik
Azure IoT MQ Preview kullanarak MQTT iletilerini yayımlama ve abone olma