Data Transmission Service (DTS), bir olay kaynağı olarak davranır ve EventBridge aracılığıyla Function Compute ile entegre olur. Entegrasyondan sonra, ilişkili işlevleri çağırmak için DTS tetikleyicilerini kullanabilirsiniz. Bu sayede, DTS değişiklik izleme görevlerinden aldığınız gerçek zamanlı artımlı veriler üzerinde özel işlemler yapabilirsiniz. Bu konuda, Function Compute konsolunda bir DTS tetikleyicisi oluşturma, işlev giriş parametrelerini yapılandırma ve kod yazıp test etme adımları açıklanmaktadır.
Genel Bakış
Function Compute konsolunda bir tetikleyici oluşturma isteği gönderdiğinizde, Function Compute tetikleyici yapılandırmasına dayanarak EventBridge'de olay akışı kaynaklarını otomatik olarak oluşturur.
Kaynaklar oluşturulduktan sonra, tetikleyici bilgilerini Function Compute konsolunda görüntüleyebilirsiniz. Ayrıca, otomatik olarak oluşturulan kaynaklarla ilgili bilgilere EventBridge konsolundan erişebilirsiniz. Bir DTS değişiklik izleme görevi bir veritabanından artımlı verileri yakaladığında, ilişkili işlev çağrılır. Toplu iş yapılandırmalarınıza bağlı olarak, işleme alınmak üzere işleve bir veya daha fazla mesaj olayı toplu halde gönderilir.
Dikkat Edilmesi Gerekenler
Tetikleyici kaynağı olarak kullanılan DTS değişiklik izleme görevi, Function Compute işleviyle aynı bölgede bulunmalıdır.
Oluşturulan olay akışı sayısı sınıra ulaşırsa, yeni DTS tetikleyicileri oluşturamazsınız. Olay akışı sınırı hakkında daha fazla bilgi için bkz. Sınırlar.
Ön Koşullar
-
EventBridge
-
Function Compute
-
Data Transmission Service (DTS)
1. Adım: Bir DTS tetikleyicisi oluşturun
Function Compute konsoluna giriş yapın. Sol gezinme bölmesinde seçeneğini belirleyin.
Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında hedef işlevi tıklayın.
İşlev ayrıntıları sayfasında Trigger sekmesini tıklayın ve ardından Create Trigger öğesini tıklayın.
-
Tetikleyici Oluştur panelinde parametreleri yapılandırın ve OK öğesini tıklayın.
Aşağıdaki tabloda temel parametreler açıklanmaktadır.
Yapılandırma Öğesi
Açıklama
Örnek
Trigger Type
Tetikleyici türü. Desteklenen tetikleyici türleri hakkında daha fazla bilgi için bkz. Tetikleyiciye genel bakış.
DTS
Name
Tetikleyici için özel bir ad.
dts-trigger
Version or Alias
Varsayılan değer LATEST'tir. Başka bir sürüm veya takma ad için tetikleyici oluşturmak istiyorsanız, işlev ayrıntıları sayfasının sağ üst köşesinde ilgili sürüme veya takma ada geçiş yapın. Sürümler ve takma adlar hakkında daha fazla bilgi için bkz. Sürüm yönetimi ve Takma ad yönetimi.
LATEST
Değişiklik İzleme Görevi
Mevcut değişiklik izleme görevinin adı.
dtsqntc2***
Tüketici Grubu
İzleme görevinden veri tüketmek için kullanılan tüketici grubunun adı.
ÖnemliTüketici grubunun diğer istemcilerin örneklerinde çalışmadığından emin olun. Aksi takdirde, belirtilen tüketici ofseti geçersiz hale gelebilir.
test
Hesap
Tüketici grubunu oluştururken belirttiğiniz hesap.
test
Password
Tüketici grubunu oluştururken belirttiğiniz parola.
Consumer Offset
İlk veri kaydını tüketmek istediğiniz zaman damgası. Tüketici ofseti, izleme görevinin zaman damgası aralığında olmalıdır.
NotTüketici ofseti yalnızca yeni bir tüketici grubu ilk kez çalıştığında etkili olur. Görev daha sonra yeniden başlatılırsa, tüketim son tüketici ofsetinden devam eder.
2022-06-21 00:00:00
Invocation Method
Bir işlev çağrı yöntemi seçin.
Değerler aşağıda açıklanmıştır.
Sync Invocation: Bu yöntem, ardışık çağrı senaryoları için uygundur. Tek bir olay veya bir olay grubu bir işlev çağrısını tetikler. Sistem, bir sonraki olay veya olay grubunun başka bir işlev çağrısını tetiklemeden önce işlevin yürütülüp sonuç döndürmesini bekler. Senkron bir çağrı isteğinin maksimum yükü 32 MB'tır. Daha fazla bilgi için bkz. Senkron çağrılar.
Async Invocation: Bu yöntem, olayları hızlı bir şekilde tüketmenizi sağlar. Tek bir olay veya bir olay grubu bir işlev çağrısını tetikler. Function Compute hemen bir yanıt döndürür ve bir sonraki olay veya olay grubu başka bir işlev çağrısını tetikler. Bu süreçte işlev eşzamansız olarak yürütülür. Eşzamansız bir çağrı isteğinin maksimum yükü 128 KB'tır. Daha fazla bilgi için bkz. Genel bakış.
Senkron Çağrı
Trigger State
Tetikleyici oluşturulduktan hemen sonra etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan olarak Enable Trigger seçilidir. Bu, tetikleyicinin oluşturulduktan hemen sonra etkinleştirildiği anlamına gelir.
Etkin
Gönderim yapılandırmaları, yeniden denemeler ve ölü mektup kuyrukları gibi gelişmiş yapılandırmalar hakkında daha fazla bilgi için bkz. Gelişmiş özellikler.
Tetikleyici oluşturulduktan sonra Trigger Name listesinde görünür. Tetikleyiciyi değiştirmek veya silmek için bkz. Tetikleyicileri yönetin.
2. Adım: İşlev giriş parametrelerini yapılandırın
DTS olay kaynağı, işleve giriş parametresi olarak bir event iletir. Bir tetikleme olayını simüle etmek için event parametresini işleve manuel olarak iletebilirsiniz.
İşlev ayrıntıları sayfasının Code sekmesinde, Test Function öğesinin yanındaki
simgesini tıklayın ve açılan listeden Configure Test Parameters seçeneğini belirleyin.-
Configure Test Parameters panelinde Create New Test Event veya Modify Existing Test Event seçeneğini belirleyin. Ardından, olay adını ve içeriğini girin ve Tamam'ı tıklayın.
Aşağıda
eventformatı gösterilmektedir:[ { "data": { "id": 321****, "topicPartition": { "hash": 0, "partition": 0, "topic": "cn_hangzhou_rm_1234****_test_version2" }, "offset": 3218099, "sourceTimestamp": 1654847757, "operationType": "UPDATE", "schema": { "recordFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } ], "nameIndex": { "id": { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, "topic": { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } }, "schemaId": "(hangzhou-test-db,hangzhou-test-db,message_info)", "databaseName": "hangzhou--test-db", "tableName": "message_info", "primaryIndexInfo": { "indexType": "PrimaryKey", "indexFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 } ], "cardinality": 0, "nullable": true, "isFirstUniqueIndex": false }, "uniqueIndexInfo": [], "foreignIndexInfo": [], "normalIndexInfo": [], "databaseInfo": { "databaseType": "MySQL", "version": "5.7.35-log" }, "totalRows": 0 }, "beforeImage": { "recordSchema": { "recordFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } ], "nameIndex": { "id": { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, "topic": { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } }, "schemaId": "(hangzhou-test-db,hangzhou-test-db,message_info)", "databaseName": "hangzhou-test-db", "tableName": "message_info", "primaryIndexInfo": { "indexType": "PrimaryKey", "indexFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 } ], "cardinality": 0, "nullable": true, "isFirstUniqueIndex": false }, "uniqueIndexInfo": [], "foreignIndexInfo": [], "normalIndexInfo": [], "databaseInfo": { "databaseType": "MySQL", "version": "5.7.35-log" }, "totalRows": 0 }, "values": [ { "data": 115 }, { "data": { "hb": [ 104, 101, 108, 108, 111 ], "offset": 0, "isReadOnly": false, "bigEndian": true, "nativeByteOrder": false, "mark": -1, "position": 0, "limit": 9, "capacity": 9, "address": 0 }, "charset": "utf8mb4" } ], "size": 45 }, "afterImage": { "recordSchema": { "recordFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } ], "nameIndex": { "id": { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 }, "topic": { "fieldName": "topic", "rawDataTypeNum": 253, "isPrimaryKey": false, "isUniqueKey": false, "fieldPosition": 1 } }, "schemaId": "(hangzhou-test-db,hangzhou-test-db,message_info)", "databaseName": "hangzhou-test-db", "tableName": "message_info", "primaryIndexInfo": { "indexType": "PrimaryKey", "indexFields": [ { "fieldName": "id", "rawDataTypeNum": 8, "isPrimaryKey": true, "isUniqueKey": false, "fieldPosition": 0 } ], "cardinality": 0, "nullable": true, "isFirstUniqueIndex": false }, "uniqueIndexInfo": [], "foreignIndexInfo": [], "normalIndexInfo": [], "databaseInfo": { "databaseType": "MySQL", "version": "5.7.35-log" }, "totalRows": 0 }, "values": [ { "data": 115 }, { "data": { "hb": [ 98, 121, 101 ], "offset": 0, "isReadOnly": false, "bigEndian": true, "nativeByteOrder": false, "mark": -1, "position": 0, "limit": 11, "capacity": 11, "address": 0 }, "charset": "utf8mb4" } ], "size": 47 } }, "id": "12f701a43741d404fa9a7be89d9acae0-321****", "source": "DTSstreamDemo", "specversion": "1.0", "type": "dts:ConsumeMessage", "datacontenttype": "application/json; charset=utf-8", "time": "2022-06-10T07:55:57Z", "subject": "acs:dts:cn-hangzhou:12345****:kk123abc60g782/dtsabcdet1ro" } ]CloudEvents parametreleri hakkında daha fazla bilgi için bkz. Olaylara genel bakış.
data alanı aşağıdaki parametreleri içerir.
Parametre
Tür
Açıklama
id
Dize
DTS veri kaydının kimliği.
topicPartition
Dizi
Konunun bölüm bilgileri.
hash
Dize
DTS'nin temel depolama parametresi.
partition
Dize
Konunun bölümü.
topic
Dize
Konunun adı.
offset
Tamsayı
DTS veri kaydı için mesaj depolama ofseti.
sourceTimestamp
Tamsayı
DTS verilerinin oluşturulduğu zaman damgası.
operationType
Dize
DTS verilerinin işlem türü.
schema
Dizi
Veritabanı tablo şeması.
recordFields
Dizi
Alanların ayrıntıları.
fieldName
Dize
Alanın adı.
rawDataTypeNum
TamsayıAlan türünün eşlenmiş değeri.
Bu değer, değişiklik izleme kanalından alınan seri durumdan çıkarılmış artımlı verilerdeki
dataTypeNumberalanına karşılık gelir. Daha fazla bilgi için bkz. Kafka istemcisi kullanarak izlenen verileri tüketin.
isPrimaryKey
Boolean
Alanın birincil anahtar olup olmadığını belirtir.
isUniqueKey
Boolean
Alanın benzersiz anahtar olup olmadığını belirtir.
fieldPosition
Dize
Alanın konumu.
nameIndex
Dizi
Adlandırılmış dizin.
schemaId
Dize
Veritabanı tablo şemasının kimliği.
databaseName
Dize
Veritabanının adı.
tableName
Dize
Tablonun adı.
primaryIndexInfo
Dize
Birincil anahtar dizini.
indexType
Dize
Birincil anahtar dizininin türü.
indexFields
Dizi
Birincil anahtar dizinindeki alanlar.
cardinality
Dize
Birincil anahtarın kardinalitesi.
nullable
Boolean
Birincil anahtarın null olabileceğini belirtir.
isFirstUniqueIndex
Boolean
İlk benzersiz dizin olup olmadığını belirtir.
uniqueIndexInfo
Dize
Benzerksiz dizin.
foreignIndexInfo
Dize
Yabancı anahtar dizini.
normalIndexInfo
Dize
Normal dizin.
databaseInfo
Dizi
Veritabanı hakkında bilgiler.
databaseType
Dize
Veritabanının türü.
version
Dize
Veritabanının sürümü.
totalRows
Tamsayı
Tablodaki toplam satır sayısı.
beforeImage
Dize
İşlemden önceki kayıt alanlarının durumu.
values
Dize
Kayıt alanlarının değerleri.
size
Tamsayı
Kayıt alanlarının boyutu.
afterImage
Dize
İşlemden sonraki kayıt alanlarının durumu.
3. Adım: İşlev kodunu yazın ve test edin
Tetikleyiciyi oluşturduktan sonra, doğruluğunu kontrol etmek için işlev kodunu yazabilir ve test edebilirsiniz. Uygulamada, DTS değişiklik izleme görevi veritabanından artımlı verileri yakaladığında tetikleyici işlevi otomatik olarak çağırır.
-
İşlev ayrıntıları sayfasının Code sekmesinde kod düzenleyicide kod yazabilir ve Deploy öğesini tıklayabilirsiniz.
Bu konuda örnek olarak Node.js kodu kullanılmaktadır.
'use strict'; /* To enable the initializer feature, implement the initializer function as follows: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event parameter and process the event. callback(null, 'return result'); } Test Function öğesini tıklayın.
Daha fazla bilgi
Function Compute konsoluna ek olarak, tetikleyicileri aşağıdaki yollarla da yapılandırabilirsiniz:
Tetikleyicileri yapılandırmak için Serverless Devs aracını kullanın. Daha fazla bilgi için bkz. Serverless Devs'in yaygın komutları.
Tetikleyicileri yapılandırmak için SDK'ları kullanın. Daha fazla bilgi için bkz. SDK'ler.
Bir tetikleyiciyi değiştirmek veya silmek için bkz. Tetikleyicileri yönetin.