Kendi yönetiminizdeki bir Apache RocketMQ kümesini EventBridge aracılığıyla Function Compute'a bağlayarak mesajları özel işlev kodunuzla işleyin. RocketMQ konunuzda mesajlar alındığında, tetikleyici toplu iş yapılandırmanıza bağlı olarak her çalıştırmada bir veya daha fazla mesajı işlevinize geçirerek otomatik olarak çağrıda bulunur.
Nasıl Çalışır?
Function Compute'da bir tetikleyici oluşturduğunuzda, Function Compute yapılandırmanıza dayanarak EventBridge içinde karşılık gelen olay akışı oluşturur. Tetikleyici ayrıntılarını Function Compute konsolunda ve otomatik olarak oluşturulan kaynakları EventBridge konsolunda görüntüleyebilirsiniz.
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Gerekli izinler verilmiş şekilde EventBridge etkinleştirilmiş olmalı
Bir Function Compute işlevi oluşturulmuş olmalı
-
Kullanılabilir ve erişilebilir durumda kendi yönetiminizdeki bir Apache RocketMQ kümesi dağıtılmış olmalı. Bir kümeyi hızla dağıtmak ve mesaj gönderip almaya başlamak için sürümünüzle ilgili hızlı başlangıç kılavuzuna bakın:
Apache RocketMQ 5.0: Hızlı BaşlangıçHızlı Başlangıç
Apache RocketMQ 4.x: Hızlı BaşlangıçHızlı Başlangıç
RocketMQ örneğinizde bir konu oluşturulmuş olmalı
RocketMQ örneğinizde bir tüketici grubu oluşturulmuş olmalı
Sınırlamalar
RocketMQ örneğine genel internet üzerinden veya bir Alibaba Cloud Sanal Özel Bulut (VPC) üzerinden erişilebilir olması gerekir.
Örneğe bir VPC üzerinden erişiliyorsa, VPC'nin işlevinizle aynı bölgede olması gerekir. Güvenlik grubunun RocketMQ NameServer bağlantı noktasında (varsayılan: 9876) gelen trafiğe izin verdiğinden emin olun.
RocketMQ tetikleyicilerinin sayısı, EventBridge olay akışı kotasıyla sınırlıdır. Ayrıntılar için bkz. Sınırlamalar.
Adım 1: Tetikleyici Oluşturma
Function Compute konsoluna giriş yapın. Sol gezinme bölmesinde Functions öğesine tıklayın.
Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında yönetmek istediğiniz işleve tıklayın.
İşlev ayrıntıları sayfasında Trigger sekmesine tıklayın, ardından Create Trigger düğmesine tıklayın.
Create Trigger panelinde aşağıdaki tabloda açıklanan parametreleri yapılandırın ve OK düğmesine tıklayın.
| Parametre | Açıklama | Zorunlu | Varsayılan | Örnek |
|---|---|---|---|---|
| Trigger type | Self-built Apache RocketMQ seçeneğini belirleyin. | Evet | — | Self-built Apache RocketMQ |
| Name | Tetikleyici için bir ad girin. | Evet | — | apache-rocketmq-trigger |
| Version or alias | Tetikleyiciyle ilişkilendirilecek işlev sürümü veya takma adı. Belirli bir sürüm veya takma ad kullanmak için önce işlev ayrıntıları sayfasında ilgili sürüme veya takma ada geçiş yapın. Bkz. Sürümleri Yönetme ve Takma Adları Yönetme. | Hayır | LATEST | LATEST |
| Endpoint | RocketMQ kümenizin NameServer adresi. | Evet | — | 192.168.X.X:9876 |
| Topic | Mesajların tüketileceği RocketMQ örneğindeki konu. | Evet | — | testTopic |
| Group ID | RocketMQ örneğindeki tüketici grubu kimliği. | Evet | — | testGroup |
| Filter type | Mesaj filtreleme yöntemi: Tag, etikete göre filtreler; SQL, mesaj özellikleri ve değerleriyle eşleşen bir SQL ifadesine göre filtreler. | Evet | — | Tag |
| Filter | Seçilen filtre türüne karşılık gelen filtre ifadesi. | Evet | — | TagA |
| Authentication mode | Kimlik doğrulama modu. Yalnızca ACL desteklenir. | Evet | — | ACL |
| Username | ACL kullanıcı adı. Authentication mode değeri ACL olduğunda gereklidir. | Evet | — | admin |
| Password | ACL parolası. Authentication mode değeri ACL olduğunda gereklidir. | Evet | — | |
| Consumer offset | Mesaj tüketiminin başlangıç noktası: Latest offset en son mesajdan başlar; Earliest offset en eski mesajdan başlar; Timestamp belirli bir zaman noktasından başlar. | Evet | — | Latest offset |
| Networking | RocketMQ kümenize bağlanmak için ağ türü: Internet, kümeye genel internet üzerinden erişir; VPC, kümeye bir VPC üzerinden erişir (VPC, vSwitch ve güvenlik grubunun seçilmesini gerektirir). | Evet | — | Internet |
| Invocation method | Tetikleyicinin işlevinizi nasıl çağırdığı: Sync invocation, işlevin tamamlanmasını bekler ve sonucu döndürür (bkz. Eşzamanlı Çağrılar); Async invocation, sonucu beklemeden hemen döner ve uzun süren işlevler için uygundur (bkz. Eşzamansız Çağrıya Genel Bakış). | Hayır | Sync invocation | Sync invocation |
| Trigger state | Tetikleyicinin oluşturulduktan hemen sonra etkinleştirilip etkinleştirilmeyeceği. | Hayır | Enabled | Enabled |
Gönderim yapılandırmaları, yeniden deneme ilkeleri ve dead-letter kuyrukları gibi gelişmiş ayarlar için bkz. Tetikleyicilerin Gelişmiş Özellikleri.
Tetikleyici oluşturulduktan sonra Triggers sekmesinde görünür. Tetikleyiciyi değiştirmek veya silmek için bkz. Tetikleyicileri Yönetme.
Adım 2: Test Olayını Yapılandırma
Tetikleyici, RocketMQ'dan gelen mesajları işlevinize olay nesnelerinden oluşan bir dizi olarak iletir. Manuel olarak bir test olayı yapılandırarak tetikleyici çağrısını simüle edin.
İşlev ayrıntıları sayfasının Code sekmesinde, Test Function yanındaki
simgesine tıklayın ve Configure Test Parameters seçeneğini belirleyin.Configure Test Parameters panelinde Create new test event veya Modify existing test event seçeneğini belirleyin. Bir olay adı girin, aşağıdaki olay içeriğini yapıştırın ve OK düğmesine tıklayın.
[
{
"msgId": "7F0000010BDD2A84AEE70DA49B57****",
"topic": "testTopic",
"systemProperties": {
"UNIQ_KEY": "7F0000010BDD2A84AEE70DA49B57****",
"CLUSTER": "DefaultCluster",
"MIN_OFFSET": "0",
"TAGS": "TagA",
"MAX_OFFSET": "128"
},
"userProperties": {},
"body": "Hello RocketMQ"
}
]
Dizideki her nesne bir RocketMQ mesajını temsil eder. Alanlar aşağıda açıklanmıştır.
| Alan | Tür | Açıklama | Örnek |
|---|---|---|---|
msgId |
String | Apache RocketMQ tarafından atanan mesaj kimliği. | 7F0000010BDD2A84AEE70DA49B57**** |
topic |
String | Konu adı. | testTopic |
systemProperties |
Map | RocketMQ tarafından ayarlanan sistem düzeyi özellikler. | — |
systemProperties.UNIQ_KEY |
String | Mesajın benzersiz anahtarı. | 7F0000010BDD2A84AEE70DA49B57**** |
systemProperties.CLUSTER |
String | RocketMQ kümesinin adı. | DefaultCluster |
systemProperties.MIN_OFFSET |
Integer | Konu kuyruğundaki minimum ofset. | 0 |
systemProperties.MAX_OFFSET |
Integer | Konu kuyruğundaki maksimum ofset. | 128 |
systemProperties.TAGS |
String | Mesaja uygulanan filtre etiketi. | TagA |
userProperties |
Map | Mesaj üreticisi tarafından ayarlanan özel özellikler. | {} |
body |
String | Mesaj gövdesi. | Hello RocketMQ |
Adım 3: İşlev Kodunu Yazma ve Test Etme
Tetikleyici oluşturulduktan sonra gelen mesajları işlemek için işlev kodunuzu yazın. Üretim ortamında tetikleyici, RocketMQ yeni bir mesaj aldığında işlevi otomatik olarak çağırır.
-
İşlev ayrıntıları sayfasının Code sekmesinde kodunuzu düzenleyiciye yazın ve Deploy düğmesine tıklayın. Aşağıdaki Node.js örneği olayı okur ve bir sonuç döndürür:
'use strict'; /* To enable the initializer feature, implement the initializer function as shown below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event and process each message. callback(null, 'return result'); } Önceki adımda yapılandırdığınız test olayını çalıştırmak için Test Function düğmesine tıklayın.
Sonraki Adımlar
Function Compute konsoluna ek olarak tetikleyicileri şu araçlarla yapılandırıp yönetebilirsiniz:
Serverless Devs: Bkz. Yaygın Serverless Devs Komutları
SDK'lar: Bkz. SDK'lar
Mevcut bir tetikleyiciyi değiştirmek veya silmek için bkz. Tetikleyicileri Yönetme.