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ığı

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=truedeğerinibroker.confdosyası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
group1ve ortam etiketinizgrayise SAE, özellik etkinleştirildikten sonra bu adıgroup1_grayolarak 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
demo paketini indirin.
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.
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=grayparametresini 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

Çağrı zinciri şu şekilde çalışır:
spring-cloud-zuul,
/A/dubboadresine yönelik bir isteği alır ve bunu spring-cloud-a'ya iletir.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.
spring-cloud-c bir RocketMQ mesajı üretir ve ortam etiketini ile IP adresini döndürür.
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.
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.