Amazon SQS ile Noktadan Noktaya Mesajlaşma

0 Hisse senetleri
0
0
0
0

giriiş

Noktadan noktaya mesajlaşma modeli, modern web ve bulut mimarilerinde yaygın olarak kullanılan bir iletişim modelidir. Sunucusuz işlevler veya mikro hizmetler gibi farklı bileşenler arasında eşzamansız etkileşimleri mümkün kılmak ve anında yanıt gerektirmeden mesaj alışverişinde bulunmalarını sağlamak için tasarlanmıştır.

Bu modelde, mesajı gönderen bileşene üretici, mesajı alan ve işleyen bileşene ise tüketici adı verilir. Üretici ve tüketici aynı sistemde veya farklı sistemlerde bulunabilir, bu da esnek ve ölçeklenebilir bir iletişim yaklaşımı sunar.

E-postaların alıcılara iletilmesine benzer şekilde, mesajlar da bir üreticiden belirli bir tüketiciye gönderilir. Bu, karmaşık dağıtılmış sistemlerde bile verimli ve güvenilir iletişim sağlar. Genellikle, üreticinin mesajı hangi tüketicinin alması gerektiğini tam olarak bildiği, ancak anında yanıt alması gerekmediği durumlarda kullanılır.

Noktadan noktaya mesajlaşma modeli, bileşenler arasındaki iletişimi ve koordinasyonu etkili bir şekilde kolaylaştırarak modern web ve bulut mimarilerinin genel performansını, güvenilirliğini ve ölçeklenebilirliğini artırır.

Ne inşa edeceğiz

Bu adım adım eğitimde, bu deseni iki AWS Lambda fonksiyonu ve bir Amazon SQS kuyruğu kullanarak uygulayacağız.

Bu adım adım eğitimde, iki AWS Lambda fonksiyonu ve bir Amazon SQS kuyruğu kullanarak basit bir örnek uygulayacağız.

Örneği TypeScript ve AWS Cloud Development Kit (AWS CDK) kullanarak oluşturacaksınız.

Örnek üç bileşenden oluşacaktır:
  • Tüketiciye mesaj gönderebilen bir üretici
  • Üreticiden mesaj alabilen tüketici.
  • Üretici ile tüketici arasında iletişim kanalı oluşturan mesaj kuyruğu.


Bu modeli uygulamanın yanı sıra, AWS Cloud Development Kit'in (CDK) tüm altyapıyı kod olarak tanımlama gücünü de vurgulayacağız. AWS CDK hakkında daha fazla bilgi edinmek isterseniz, AWS CDK Geliştirici Kılavuzu'na göz atın.

Bu eğitimin sonunda, kuyruk tabanlı noktadan noktaya mesajlaşmanın bireysel bileşenleri hakkında kapsamlı bir anlayışa sahip olacak, SQS kullanarak iki Lambda işlevi arasında eşzamansız iletişimleri başarıyla uygulayacak ve altyapı oluşturma konusunda uygulamalı deneyim kazanacaksınız. CDK ile kodlayın

Ancak kodlamaya başlamadan önce, asenkron noktadan noktaya mesajlaşma modelinin avantaj ve dezavantajlarına kısaca bir göz atalım.

Eşzamansız noktadan noktaya mesajlaşma paradigmasının avantajları ve dezavantajları

Faydalar
  • Gevşek bağlantı: Eşzamansız noktadan noktaya mesajlaşma modeli, uygulamalar arasında gevşek bağlantıyı teşvik ederek, sıkı bir entegrasyona ihtiyaç duymadan bağımsız olarak iletişim kurmalarına olanak tanır. Bu esneklik, tüm sistemi etkilemeden tek tek bileşenlerin ölçeklenmesini ve değiştirilmesini kolaylaştırır.
  • Ölçeklenebilirlik: Bu model, iş yüklerini eşzamansız olarak yönetmek için birden fazla tüketici uygulaması eklenebildiğinden, verimli yatay ölçeklendirmeye olanak tanır. Bu, sistemin yüksek hacimli eşzamanlı mesaj ve istekleri daha etkili bir şekilde işlemesini sağlar.
  • Güvenilirlik: Asenkron mesajlaşmada, bir mesaj iletilmezse veya işlenmezse, daha sonra işlenmek üzere yeniden denenebilir veya bir hata kuyruğuna gönderilebilir; bu da sistemin güvenilirliğini artırır.
  • Hata toleransı: Eşzamansız mesajlaşma, mesaj üreticilerini ve tüketicilerini ayırarak hata toleransı sağlar. Bir uygulama veya bileşen çökerse, sistem tekrar çevrimiçi olduğunda mesajlar daha sonra işlenmek üzere saklanabilir ve böylece veri kaybı yaşanmaz.
Dezavantajları
  • Karmaşıklık: Eşzamanlı noktadan noktaya mesajlaşma modelinin uygulanması, diğer bütünleştirme modellerine kıyasla daha karmaşık olabilir ve ek mesaj işleme mantığı gerektirir.
  • Mesaj bağımlılıkları ve olası tekrarlar: Eşzamansız bir mesajlaşma sisteminde mesajlar arasındaki bağımlılıkları yönetmek ve doğru mesaj silme işlemini sağlamak zor olabilir. Mesaj sıralaması, mesaj tekrarı ve mesaj işleme bağımlılıkları gibi olası sorunları ele almak için dikkatli bir tasarım ve uygulama gerekir.
  • Artan gecikme: Eşzamansız mesajlaşma, mesajların işlenmesi daha uzun sürebileceğinden, mesaj gönderme ve yanıt alma arasında gecikmeye neden olur. Bu gecikme, gerçek zamanlı etkileşimleri etkileyebilir ve anında geri bildirim gerektiren uygulamalar için uygun olmayabilir.

Mimari kararlar alırken, bu dengeleri göz önünde bulundurmak ve özel gereksinimlerinize ve kısıtlamalarınıza en uygun iletişim modelini seçmek her zaman önemlidir. Birçok modern uygulama, eşzamansız noktadan noktaya mesajlaşma, eşzamansız istek-yanıt iletişimi ve olay odaklı iletişim de dahil olmak üzere birden fazla entegrasyon modeline dayanır.

Ama şimdi eğitime başlayalım ve bu kalıbın AWS Lambda ve Amazon SQS kullanarak nasıl uygulanacağını öğrenelim.

Kodlama sırasında kaynak maliyetleri hakkında bir not: Bu eğitimde yalnızca minimum miktarda kaynak kullanılır; bunların tümü, her hesap oluşturulduktan sonraki ilk 12 ay boyunca AWS tarafından sunulan ücretsiz katmana dahildir:

  • Birkaç kilobaytlık kod, 5 GB ücretsiz depolama alanı sağlayan Amazon S3'te saklanacak.
  • Aylık 1 milyon ücretsiz istek sunan SQS'yi birkaç kez aradık.
  • Aylık 1 milyon ücretsiz çağrı hakkı sunan AWS Lambda'da iki adet fonksiyonu çağıracağız.

Yani adım adım kılavuzu takip ederseniz, kesinlikle ücretsiz seviyede kalırsınız. Ayrıca, bu eğitim sırasında oluşturulan tüm kaynakları silmenize yardımcı olacak bir bölüm de ekledim.

Ön koşullar

Komut satırı arayüzü (CLI) ve CDK yüklüyse, kurulumlarınızın sürümlerini görmelisiniz. Aksi takdirde, komutun bulunamadığını belirten bir hata alırsınız.

Bu eğitime başlamadan önce aşağıdakilere ihtiyacınız olacak:

  • AWS hesabı
  • AWS Bulut Geliştirme Kiti (AWS CDK)

Bu eğitim için en azından AWS CLI ve AWS CDK'nın 2. sürümüne ihtiyaç vardır.

Terminalde aşağıdaki komutu çalıştırarak AWS CLI sürümünü belirleyebilirsiniz:

aws --version

Ve AWS CDK sürümünü şu komutu çalıştırarak öğrenebilirsiniz:

cdk --version

Adım 1 – CDK uygulamasını oluşturun

1.1 – CDK programını başlatın

Öncelikle ilk kurulumu yapıp CDK'nın projeyi derleyecek kodu otomatik olarak üretmesini sağlamalısınız.

Komut satırından proje için bir dizin oluşturun, cd komutuyla dizine girin ve projeyi başlatın:

mkdir point-to-point-example
cd point-to-point-example
cdk init app --language typescript

Bu, projenin ana dosya yapısını oluşturur ve gerekli paketleri yükler.

Şimdi projeyi favori IDE'nizde açıp oluşturulan projeye ve özellikle aşağıdaki iki dosyaya bakmak için iyi bir zaman:

point-to-point-example/
├── bin/
│ └── point-to-point-example.ts
├── lib/
│ └── point-to-point-example-stack.ts
└── ...

Dosya bin\noktadan-noktaya-örnekler.ts CDK programının giriş noktası. Bu eğitimde bu dosyaya tekrar bakmamıza gerek kalmayacak.

Dosya lib\noktadan-noktaya-örnek-yığın.ts Programın ana yığınının tanımlandığı yerdir. Zamanımızın çoğunu bu dosyada geçiririz.

Bu eğitimde ilerledikçe uygulamamızın altyapısını sınıfa tanıtacağız. Noktadan NoktayaÖrnekYığını Bu dosyaya şunları ekleyeceğiz. Editörünüzde açın ve bir göz atın:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// import * as sqs from 'aws-cdk-lib/aws-sqs';
export class PointToPointExampleStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// The code that defines your stack goes here
// ...
}
}
1.2 – Ortamı başlatın

Bir AWS CDK uygulamasını bir ortama, yani belirli bir AWS hesabına ve bölgesine ilk kez dağıttığınızda, ortamı bir CDKToolkit yığınıyla başlatmanız gerekir. Bu yığın, gerçek uygulama dağıtım süreci sırasında şablonları ve varlıkları depolamak için kullanılan bir S3 kovası dağıtır.

Ortamı başlatmak için, hala örnek noktadan noktaya dizininde olduğunuzdan emin olun ve aşağıdaki komutu çalıştırın:

cdk bootstrap

Bu işlem biraz zaman alacak ve komut satırınızda aşağıdaki çıktıyı gördüğünüzde tamamlanmış olacak:

✅ Environment aws://[account_id]/[region] bootstrapped.
1.3 – İlk yığını dağıtın

Yığını dağıtmak için, hala örnek noktadan noktaya dizininde olduğunuzdan emin olun ve aşağıdaki komutu çalıştırın:

cdk deploy

Bu komut, uygulamayı bir AWS CloudFormation şablonuna derler ve AWS hesabınıza dağıtır.


Şimdi yığın ayrıntılarını açın ve inceleyin. Kaynaklar sekmesinde, yığınımız için yalnızca bazı ilk yapılandırma ayrıntılarından oluşan CDKMetadata adlı bir kaynak dışında hiçbir şeyin dağıtılmadığını göreceksiniz.

Adım 2 – SQS kuyruğunu oluşturun

Her şey ayarlandıktan sonra ilk gerçek kaynağınızı, yani bir SQS kuyruğunu oluşturabilirsiniz.

2.1 – Kuyruğu yığına ekleyin

Başlamak için dosya lib\noktadan-noktaya-örnek-yığın.ts Açık.

CDK şablonunun sürümüne bağlı olarak, aws-cdk-lib/aws-sqs gibi bazı içe aktarma ifadelerini bir yoruma eklemiş olabilir. Öyleyse, import * as sqs from 'aws-cdk-lib/aws-sqs' ifadesinin önündeki // yorum sembollerini kaldırın, aksi takdirde dosyanın ilk üç satırı şu şekilde görünecek şekilde kendiniz ekleyin:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as sqs from 'aws-cdk-lib/aws-sqs';

Şimdi sınıftaki yorumlar. Noktadan NoktayaÖrnekYığını Aşağıdaki kodu silip değiştirin ve değişikliklerinizi kaydedin:

const queue = new sqs.Queue(this, 'Queue', {
queueName: 'MyQueue',
});
2.2 – Kuyruğu dağıtın

Kuyruğu dağıtmak için proje dizininizde aşağıdaki komutu çalıştırın:

cdk deploy

Artık dağıtım sürecini terminal çıktısından izleyebilirsiniz ve bir veya iki dakika içinde tamamlanması gerekir.

Dağıtım tamamlandıktan sonra AWS Yönetim Konsolu'ndaki SQS kuyrukları listenize gidin ve SqsTutorialStack-Queue adlı bir kuyruk bulun:

2.3 – Dağıtılan kuyruğu kontrol edin

AWS Yönetim Konsolu'ndaki SQS panosuna gidin ve kuyruk listesine bakın. Kuyruğunuzu bulamıyorsanız, doğru bölgede olduğunuzdan emin olun.


Adım 3 – Üretici işlevini oluşturun ve onu kuyruğa bağlayın

3.1 – Jeneratör fonksiyonunun kaynak kodunu yazın

Lambda fonksiyonu için JavaScript kullanacağız ve kaynak kodunu CDK uygulamasının içindeki kendi klasöründe saklayacağız. Daha sonra, CDK yığınımızdan bu klasöre referans vereceğiz, böylece içerikleri otomatik olarak paketleyip AWS'ye yükleyip dağıtabileceğiz.

Proje dizininde olduğunuzdan emin olun ve aşağıdaki dizinleri ve dosyanın kendisini oluşturun:

mkdir lambda-src
mkdir lambda-src/producer
touch lambda-src/producer/send_message_to_sqs.js

Projenizin dizin yapısı artık şu şekilde görünmelidir:

point-to-point-example/
├── bin/
│ └── point-to-point-example.ts
├── lambda-src/
│ └── producer/
│ └── send_message_to_sqs.js
├── lib/
│ └── point-to-point-example-stack.ts
└── ...

Yeni dosya oluşturuldu. lambda-src/üretici/sqs.js'ye_mesaj_gönder Editörünüzde açın ve aşağıdaki kodu ekleyin:

const sqs = require("@aws-sdk/client-sqs");
// Create an Amazon SQS service client
const client = new sqs.SQSClient();
exports.handler = async (event, context) => {
// Create a message, including the function's name from
// its execution context
const myMessage = 'Hello World from ' + context.functionName
// Get the queue URL from the execution environment
const queueUrl = process.env.SQSQueueUrl
// Create a SendMessageCommand containing the message
// and the queue URL
const command = new sqs.SendMessageCommand({
MessageBody: JSON.stringify({ message: myMessage }),
QueueUrl: queueUrl
});
// Send the message and return the result 
const result = await client.send(command);
return result;
}

Bu, SQS kuyruğumuza bir mesaj gönderen ve sonucu döndüren basit bir Lambda fonksiyon işleyicisidir.

Bu işlevi oluştururken hangi kuyruğu kullanacağımızı bilmediğimizden veya daha sonra işlev kodunu değiştirmeden değiştirmek isteyebileceğimizden, kuyruk URL'sini çalışma zamanından alıyoruz. Bu şekilde, Lambda işlevinin CDK yığınında dağıtımı sırasında dinamik olarak tanımlayabiliriz.

3.2 – Üretici işlevini yığına ekleyin

AWS'de gerçek bir Lambda fonksiyonu oluşturmak için onu yığına eklemeniz gerekir. Bunu yapmak için lib/point-to-point-example-stack.ts dosyasını açın.

İlk olarak dosyanın en üstüne başka bir import ifadesi ekleyin:

import * as lambda from 'aws-cdk-lib/aws-lambda';

Daha sonra, aşağıdaki kod parçacığını, kuyruk altındaki kurucunun içine ekleyin:

const producerFunction = new lambda.Function(this, 'Producer', {
functionName: 'Producer',
runtime: lambda.Runtime.NODEJS_18_X,
code: lambda.Code.fromAsset('lambda-src/producer'),
handler: 'send_message_to_sqs.handler',
environment: {
SQSQueueUrl: queue.queueUrl,
}
});

Bu, lambda-src/producer dizininin bir fonksiyonunu, paketlerini ve içeriklerini oluşturur ve çağrıldığında send_message_to_sqs.js'de tanımlanan işleyiciyi kullanacak şekilde fonksiyonu yapılandırır.

Ayrıca, SQSQueueUrl ortam değişkenini dinamik olarak SQS kuyruğunun gerçek URL'sine ayarlar, böylece process.env.SQSQueueUrl kullanılarak fonksiyon içinden erişilebilir.

3.3 – Üreticinin performansının lisanslanması

Her Lambda işlevi, CDK'nın varsayılan olarak temel yürütme rolünü kullanarak sağladığı birkaç temel IAM izni gerektirir.

Ancak üretici fonksiyonumuzun kuyruğa mesaj göndermek için ek izinlere ihtiyacı var. Neyse ki CDK'da IAM politikalarını manuel olarak yönetmemize gerek yok. SQS kuyruğunun grantSendMessages metodunu Lambda fonksiyonumuzla kullanabiliriz.

Bunu yapmak için producerFunction'ınızın altına şu satırı ekleyin:

queue.grantSendMessages(producerFunction);
3.4 – Üretici işlevini dağıtın

Fonksiyonu kaynak koduyla birlikte dağıtmak için proje dizininde aşağıdaki komutu çalıştırın:

cdk deploy

Bu, yeni veya değiştirilmiş kaynakların dağıtımına hazırlık sağlar.

Yığınınızdaki herhangi bir değişiklik IAM izinlerinin oluşturulmasını veya değiştirilmesini gerektiriyorsa, CDK güvenlik nedeniyle bu değişiklikleri yeniden incelemenizi isteyecektir.

Aşağıdaki görüntüde CDK'nın IAM izinlerini etkileyen üç değişiklik yapmak istediğini görebilirsiniz:

  • Lambda servisinin (lambda.amazon.aws) Üretici işlevine bağlı yürütme rolünü üstlenmesine izin verin.
  • Yönetici rolünün SQS kuyruğuna erişmesine ve mesaj göndermesine izin vermek için gerekli izinleri doğrudan ekleyin.
  • Yürütme rolüne ilk izinlere sahip yönetilen bir politika ekleyin.


Onaylamak için y yazın ve CDK, yeni Lambda işlevini IAM rolüyle birlikte dağıtacaktır.

3.5 – Üreticinin performansını test edin

Fonksiyonu çalıştırdıktan sonra AWS Lambda panosundaki fonksiyon listesine gidin.

Fonksiyon adı, yığında tanımladığımızla aynı: Producer. Fonksiyonu bulamıyorsanız, doğru bölgede olduğunuzdan emin olun.

Fonksiyon ismine tıklayarak detaylarını açabilir ve kaynak kod bölümüne gidebilirsiniz.

Soldaki dosya gezgini klasöründe send_message_to_sqs.js adında bir dosya bulunmaktadır.

Dosya adına çift tıklayarak kaynak kodunu açtığınızda, CDK projemizdeki lambda-src/producer klasöründe oluşturduğumuz dosyanın birebir kopyası olduğunu görebilirsiniz.


Şimdi bir test olayı yapılandıralım.

Bunu yapmak için Test düğmesine tıklayın. Henüz bir test olayı yapılandırmadıysanız, Test Yapılandırması sayfası açılacaktır. Olay için bir ad girin (örneğin, "test-event") ve Kaydet'e tıklayın.

Test olayı yapılandırıldıktan sonra, tekrar Test'e tıklayın; bu, doğrudan Lambda fonksiyonunu çağıracaktır.

Bu, şu yanıtı içeren bir Yürütme Sonuçları sekmesi oluşturacaktır:

{
"$metadata": {
"httpStatusCode": 200,
"requestId": "cb033b2a-1234-5678-9012-66188359d280",
"attempts": 1,
"totalRetryDelay": 0
},
"MD5OfMessageBody": "b5357af0c1c816b2d41275537cc0d1af",
"MessageId": "4a76e538-1234-5678-9012-749f0f4b9294"
}

Lambda fonksiyonundaki kod parçasını hatırlıyor musunuz?

const result = await client.send(command);
return result;

Yukarıdaki yürütme sonuçlarındaki JSON nesnesi, SQS'nin client.send(command) komutuna yanıt olarak döndürdüğü şeyin aynısıdır ve "httpStatusCode": 200 gibi ilginç bilgiler içerir; bu, kuyruğun mesajı başarıyla aldığı anlamına gelir.

3.6 – SQS'den Mesajları Manuel Olarak Alma

Şu anda kuyruk tüketiciye bağlı değil, bu nedenle mesaj alınmayacak. Ancak mesajı manuel olarak alabiliriz.

SQS panosuna gidin, ayrıntı sayfasını açmak için kuyruğa tıklayın ve Mesaj Gönder ve Al düğmesine tıklayın.

Sonraki sayfada, Mesajları Al bölümüne gidin ve Mesajlar İçin Anket düğmesine tıklayın. Bu düğme, test ettiğinizde oluşturucu işlevinizin gönderdiği mesajlar da dahil olmak üzere, şu anda uçan tüm mesajları göstermelidir:


Açmak için mesaj kimliğine tıklayın. Aşağıdaki gövdeyi içermelidir:

{"message":"Hello World from Producer"}

Tebrikler! SQS kuyruğuna mesaj gönderen bir Lambda fonksiyonunu başarıyla dağıttınız ve test ettiniz.

Daha sonra tüketici fonksiyonunu oluşturuyoruz ve kuyruğa yeni bir mesaj geldiğinde otomatik olarak çağrılacak şekilde yapılandırıyoruz.

Adım 4 – Tüketici işlevini oluşturun ve onu kuyruğa bağlayın

4.1 – Tüketici fonksiyonunun kaynak kodunu yazın

Tüketici fonksiyon kodu lambda-src içindeki kendi klasöründe saklanır, böylece CDK onu otomatik olarak paketleyebilir ve yeni Lambda fonksiyonuna yükleyebilir.

Proje dizininde olduğunuzdan emin olun (bin/ veya lib/ dizininde değil) ve kaynak dosyayla aşağıdaki dizini oluşturun:

mkdir lambda-src/consumer
touch lambda-src/consumer/receive_message_from_sqs.js

Editörünüzde lambda-src/consumer/receive_message_from_sqs.js dosyasını açın ve aşağıdaki kodu girin:

exports.handler = async (event) => {
// Retrieve the message from the event and log it to the console
const message = event.Records[0].body;
console.log(message);
}

Bu, SQS mesajını açan ve bunu rapora yazdıran çok basit bir Lambda fonksiyon işleyicisidir.

4.2 – Tüketici işlevini yığına ekleyin

AWS'de gerçek bir Lambda fonksiyonu oluşturmak için onu yığına eklemeniz gerekir. Bunu yapmak için lib/point-to-point-example-stack.ts dosyasını açın.

Üreticinin içine, queue.grantSendMessages(producerFunction)'ın altına aşağıdaki kod parçacığını ekleyin:

 const consumerFunction = new lambda.Function(this, 'Consumer', {
functionName: 'Consumer',
runtime: lambda.Runtime.NODEJS_18_X,
code: lambda.Code.fromAsset('lambda-src/consumer'),
handler: 'receive_message_from_sqs.handler'
});

Bu tüketici fonksiyonu, lambda-src/consumer dizininin paketlerini ve içeriklerini oluşturur ve çağrıldığında receive_message_from_sqs.js'de tanımlanan işleyiciyi kullanacak şekilde fonksiyonu yapılandırır.

4.3 – SQS kuyruğunu Tüketiciye bir olay kaynağı olarak ekleyin

Bu fonksiyonun, kuyruğumuzda yeni bir mesaj olduğunda tetiklenmesini istiyoruz. Bunu yapmak için, kuyruğu fonksiyon için bir olay kaynağı olarak eklememiz ve ayrıca fonksiyona mesajları tüketmesi için gerekli tüm izinleri vermemiz gerekiyor.

İlk olarak dosyanın en üstüne başka bir import ifadesi ekleyin:

import { SqsEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';

Daha sonra customersFunction tanımının altına aşağıdaki iki satırı ekleyin:

consumerFunction.addEventSource(new SqsEventSource(queue));
queue.grantConsumeMessages(consumerFunction);
4.4 – Tüketici işlevinin dağıtımı

Fonksiyonu kaynak koduyla birlikte dağıtmak için proje dizininde aşağıdaki komutu çalıştırın:

cdk deploy

Bu, yeni veya değiştirilmiş kaynakların dağıtımını hazırlar ve yeni IAM izinlerini yeniden doğrulamanızı ister.

Onaylamak için y yazın ve CDK yeni Lambda fonksiyonunu yürütme rolüyle birlikte yürütecek ve SQS kuyruğuna ekleyecektir.

Dağıtım tamamlandığında her şey hazır ve bağlı olacak. Bakalım işe yarayacak mı?

Adım 5 – Uygulamanın uçtan uca test edilmesi

Uygulamayı test etmek için, üretici fonksiyonunu manuel olarak çağırarak kuyruğa başka bir mesaj gönderiyoruz. Ardından, tüketici fonksiyonunun yürütme günlüklerini kontrol ederek mesajı otomatik olarak başlatıp işlemediğini kontrol ediyoruz.

5.1 – Üretici fonksiyonunu çağırın

3.5 - Üretici Fonksiyonunu Test Etme bölümünde belirtilen adımları izleyerek üretici fonksiyonunu tekrar çağırın. İşte kısa bir özet:

  • AWS Lambda panosundaki fonksiyon listesine gidin.
  • Üretici fonksiyonunun ismine tıklayarak açın.
  • Kaynak kod bölümüne gidin.
  • Test butonuna tıklayın.
  • Fonksiyonun başarıyla çalıştığından emin olun.
5.2 – Tüketici performans raporunu kontrol edin

AWS Lambda panosundaki fonksiyon listesine geri dönün ve bu sefer Tüketici fonksiyonunu açın.

Aşağı kaydırın, Monitor adlı bir sekme açın, bu sekmenin içinde Logs sekmesini açın ve Recent Invocations'a bakın, burada fonksiyonun son LogStream'ine giden bir bağlantı bulmalısınız.


Ardından, Günlük Akışı bağlantısına tıklayın. Bu, günlük girişinin kendisini gösterecektir; bu formata alışkın değilseniz biraz kafa karıştırıcı görünebilir.

Basitçe bu ikisinin tam ortasındaki girişi arayın, START RequestId: … ve END Request ID: … ile başlıyor.

Girişi genişletmek için oka tıklayın, orijinal mesajı burada bulacaksınız:

Sonuç

Tebrikler! SQS kullanarak iki Lambda fonksiyonu arasında eşzamansız noktadan noktaya mesajlaşmayı kurmak için ihtiyacınız olan her şeyi oluşturdunuz.

SQS ile mesajları kategorilere ayırma, mesaj sırasını sağlama ve hatalı mesajları otomatik olarak son teslim tarihine kadar bekleme sırasına (DLQ) gönderme gibi daha birçok şey yapabilirsiniz. Daha fazla bilgi edinmek isterseniz Amazon SQS Geliştirici Kılavuzu'na göz atın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz