Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:Geliştirme senaryosu: Message Queue for Apache RocketMQ ile ortam yalıtımı yapın

Son Güncelleme:Oct 06, 2026

Serverless App Engine (SAE), ApsaraMQ for RocketMQ ile entegre olur ve iş kodunuzda değişiklik yapmadan tam uçtan uca ortam yalıtımını eşzamansız mesaj yollarına genişletir.

Çalışma mantığı

dg_rocket_mq_workflow

Kademeli sürüm özelliği etkinleştirildiğinde SAE, mesajları ortam etiketine göre yönlendirmek için RocketMQ mesaj özelliklerini kullanır. Her bir mesajdaki etiket, mesajın hangi tüketici grubuna iletileceğini belirler:

Ortam etiketi Tüketici grubu (örnek) Yönlendirilen mesajlar
(yok — temel) group1 Yalnızca temel tüketiciler
gray group1_gray Yalnızca kademeli sürüm tüketicileri

Temel ortam, her iki ortamdaki mesajları da tüketebilir. Mesaj tüketimiyle tetiklenen çağrılar, eşzamanlı trafikle aynı yönlendirme kurallarını izler; kademeli sürüm ortamından gelen istekler kademeli sürüm alt hizmetlerine, temel istekler ise temel alt hizmetlere gider.

Kademeli sürüm özelliği, yalnızca hem üreticilerde hem de tüketicilerde etkinleştirildiğinde mesajlar için etkili olur. Özelliği yalnızca bir taraf etkinleştirirse özellik çalışmaz.

Ön koşullar

Başlamadan önce aşağıdakileri tamamladığınızdan emin olun:

  • Desteklenen bir Message Queue for Apache RocketMQ sürümü. Desteklenen sürümler: 4.2.0 ve üzeri.

    RocketMQ varyantı Sürüm gereksinimi
    Apache RocketMQ (açık kaynak) RocketMQ Server ve RocketMQ Client 4.5.0 veya üzeri
    ApsaraMQ for RocketMQ (ticari) Platinum Edition; Ons Client 1.8.0.Final veya üzeri. Daha fazla bilgi için bkz. hızlı başlangıç genel bakışı.
  • Broker üzerinde SQL92 filtrelemenin etkinleştirilmesi. enablePropertyFilter=true değerini broker.conf dosyasında ayarlayın ve broker'ı yeniden başlatın.

  • Hem çekme (pull) hem de itme (push) modunun desteklenmesi.

  • RocketMQ tabanlı kademeli sürüm özelliğini etkinleştirdikten sonra SAE, mesaj tüketici gruplarını değiştirir. Örneğin, orijinal tüketici grubunuz group1 ve ortam etiketiniz gray ise SAE, özellik etkinleştirildikten sonra bu adı group1_gray olarak yeniden adlandırır. ApsaraMQ for RocketMQ kullanıyorsanız, kademeli sürüm özelliğinin yeniden adlandıracağı tüm tüketici gruplarını özelliği etkinleştirmeden önce önceden oluşturun.

Adım 1: Demo uygulamalarını dağıtın

  1. demo paketini indirin.

  2. Ana uygulama yapılarını (Application A, Application B ve Application C) dağıtın. Ayrıntılar için bkz. Spring Cloud uygulamalarını SAE'de barındırma.

  3. Kademeli sürüm uygulamalarını (Application A-gray, Application B-gray ve Application C-gray) dağıtın. Bu uygulamaları ana uygulama yapılarından ayırmak için her bir kademeli sürüm uygulamasının başlatma komutuna -Dalicloud.service.tag=gray parametresini ekleyin.

SAE yerleşik olmayan bir hizmet kayıt defteri kullanıyorsanız her uygulamaya aşağıdaki başlatma parametrelerini ekleyin: -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false .

Adım 2: Kademeli sürüm özelliğini etkinleştirin

Demoda spring-cloud-c üretici, spring-cloud-a ise tüketicidir. Aşağıdaki başlatma parametresini ekleyerek her ikisinde de kademeli sürüm özelliğini etkinleştirin:

-Dprofiler.micro.service.mq.gray.enable=true

Bu parametreyi hem spring-cloud-c hem de spring-cloud-a'nın başlatma komutuna ekleyin, ardından her uygulamayı SAE konsolu üzerinde yeniden dağıtın.

Özelliği devre dışı bırakmak için parametreyi kaldırın ve yeniden dağıtım yapın.

Adım 3: Ortam yalıtımını doğrulayın

dg_implement_end_to_end_canary_release_via_rocket_mq

Çağrı zinciri şu şekilde çalışır:

  1. spring-cloud-zuul, /A/dubbo adresine yönelik bir isteği alır ve bunu spring-cloud-a'ya iletir.

  2. spring-cloud-a, Dubbo protokolünü kullanarak spring-cloud-b'yi çağırır; spring-cloud-b ise spring-cloud-c'yi çağırır.

  3. spring-cloud-c bir RocketMQ mesajı üretir ve ortam etiketini ile IP adresini döndürür.

  4. spring-cloud-a mesajı tüketir ve aynı anda Spring Cloud protokolünü kullanarak spring-cloud-b'yi çağırır; spring-cloud-b tekrar spring-cloud-c'yi çağırır.

  5. Sonuçlar günlüklerde görünür.

/A/dubbo adresine bir test isteği gönderin. Beklenen yanıt ve günlük çıktısı şöyledir:

# Response:
A[10.25.xx.xx] -> B[10.25.xx.xx] -> C[10.25.xx.xx]

# Log on spring-cloud-a after consuming the message:
c.a.mse.demo.service.MqConsumer: topic:TEST_MQ,producer:C[10.25.xx.xx],invoke result:A[10.25.xx.xx] -> B[10.25.xx.xx] -> C[10.25.xx.xx]

Günlükleri görüntülemek için SAE konsolunda oturum açın ve spring-cloud-a uygulamasının günlüğünü açın.

Şunları doğrulayın:

  • Kademeli sürüm uygulaması tarafından üretilen mesajları yalnızca kademeli sürüm tüketicileri tüketir.

  • Temel uygulama tarafından üretilen mesajları yalnızca temel tüketiciler tüketir.

  • Temel ortam, kademeli sürüm uygulamaları tarafından üretilen mesajları da tüketebilir.