0Pricing
Cloud & IT Cert Prep · Ders

Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama

Mesajların iki kez işlenmemesi için görünürlük zaman aşımlarını ayarlayacak, başarısız mesajları ölü mektup kuyruğuna yönlendirecek ve uzun yoklamayla maliyetleri azaltacaksınız.

Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Görünürlük Zaman Aşımı Mekanizması

Bir tüketici SQS'den mesaj aldığında mesaj, görünürlük zaman aşımı adı verilen bir süre boyunca diğer tüm tüketicilerden gizlenir. Bu süre içinde tüketici mesajı işler ve ardından siler. Tüketici çöker veya mesajı zamanında tamamlayamazsa görünürlük zaman aşımı sona erer ve mesaj yeniden görünür hâle gelir; böylece başka bir tüketici mesajı alabilir. Bu, SQS'nin en az bir kez teslimat garantisinin temel mekanizmasıdır.

Görünürlük Zaman Aşımını Yapılandırma

Varsayılan görünürlük zaman aşımı 30 saniyedir. Bu değer 0 saniye ile 12 saat arasında ayarlanabilir. Beklenen en uzun işleme süresini rahatça aşacak şekilde ayarlayın; işleme 2 dakikaya kadar sürüyorsa zaman aşımını en az 3-4 dakika olarak belirleyin. Ayrıca change-message-visibility kullanarak zaman aşımını makbuz başına değiştirebilirsiniz. Bu, tüketicinin belirli bir mesajın işlenmesini tamamlamak için daha fazla zamana ihtiyaç duyduğunu fark ettiği durumlarda kullanışlıdır.

# Extend visibility timeout for a specific message
aws sqs change-message-visibility \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
  --receipt-handle 'AQEBwJnKyrHigUMZj...' \
  --visibility-timeout 300

Çok Kısa ve Çok Uzun Zaman Aşımı

Zaman aşımını çok kısa ayarlamak, tüketici işlemi tamamlamadan önce mesajların yeniden görünmesine ve yinelenen işlemeye neden olur. Zaman aşımını çok uzun ayarlamak ise özgün tüketici sessizce başarısız olduğunda (örneğin, düzgün bir temizlik işlemi gerçekleşmeden EC2 örneğinin çökmesi) başka bir tüketicinin mesajı almasını geciktirir. En uygun zaman aşımı, 99. yüzdelik dilimdeki işleme sürenizden biraz uzun, ancak tüketici hatalarından hızlıca kurtulmaya yetecek kadar kısa olmalıdır. Zaman aşımı sorunlarını belirlemek için ApproximateNumberOfMessagesNotVisible CloudWatch metriğini izleyin.

Ölü Harf Kuyrukları Açıklaması

Ölü Harf Kuyruğu (DLQ), mesajların yapılandırılabilir sayıda başarısız işleme denemesinden sonra gönderildiği ayrı bir SQS kuyruğudur (maxReceiveCount). Bir mesajın alma sayısı maxReceiveCount değerini aştığında SQS, mesajı otomatik olarak DLQ'ya taşır. DLQ'lar, sürekli başarısız olan zehirli mesajların kuyruğu süresiz olarak engellemesini önler. DLQ'daki mesajlar incelenebilir, hataları ayıklanabilir ve işleme hatası düzeltildikten sonra yeniden oynatılabilir.

Ölü Harf Kuyruğunu Yapılandırma

DLQ, yalnızca normal bir SQS kuyruğudur (Standard kaynak için Standard, FIFO kaynak için FIFO). Kaynak kuyrukta, hangi kuyruğun DLQ olduğunu ve maxReceiveCount eşiğini belirtmek üzere Yeniden Yönlendirme İlkesini yapılandırırsınız. DLQ'nın saklama süresinin daha uzun olmasını sağlayın; mesajlar DLQ'ya geç ulaşır ve süreleri dolmadan önce inceleme yapmak için zamana ihtiyacınız vardır.

aws sqs set-queue-attributes \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
  --attributes '{
    "RedrivePolicy": "{\"deadLetterTargetArn\": \"arn:aws:sqs:us-east-1:123456789012:MyDLQ\", \"maxReceiveCount\": \"5\"}"
  }'

DLQ İzleme ve Alarm Kurulumu

DLQ'nın ApproximateNumberOfMessagesVisible metriği için bir CloudWatch alarmı ayarlayın. DLQ'ya ulaşan her mesaj, ilgilenilmesi gereken bir işleme hatasına işaret eder. Alarmı, nöbetçi mühendisinize hemen bildirim gönderen bir SNS bildirimi tetikleyecek şekilde yapılandırın. Her DLQ mesajını incelenmesi gereken bir hata olarak değerlendirin; DLQ mesajlarının sessizce birikmesine izin verilmemelidir. Hatayı düzelttikten sonra, mesajları yeniden işlenmek üzere kaynak kuyruğa göndermek için DLQ Yeniden Yönlendirme özelliğini kullanın.

DLQ Yeniden Yönlendirme: Mesajları Yeniden Oynatma

İşleme hatalarına neden olan hatayı düzelttikten sonra, mesajları DLQ'dan kaynak kuyruğa yeniden işlenmek üzere taşımak için SQS DLQ Yeniden Yönlendirme özelliğini kullanın. Konsol, yerleşik bir yeniden yönlendirme özelliği sunar. Yalnızca belirli mesajları yeniden oynatmak için mesaj özniteliklerine göre filtreleme yapabilirsiniz. Alternatif olarak, özel filtreleme mantığına ihtiyacınız varsa DLQ'yu yoklayıp mesajları kaynak kuyruğa geri iletmek üzere bir Lambda işlevi yazabilirsiniz.

# Start DLQ message move task
aws sqs start-message-move-task \
  --source-arn 'arn:aws:sqs:us-east-1:123456789012:MyDLQ' \
  --destination-arn 'arn:aws:sqs:us-east-1:123456789012:MyQueue' \
  --max-number-of-messages-per-second 5

Kısa Yoklama ve Uzun Yoklama

Varsayılan olarak SQS, kısa yoklama kullanır: Bir receive-message çağrısı sunucuların rastgele bir alt kümesini örnekler ve hiç mesaj olmasa bile hemen yanıt verir. Bu, çok sayıda boş yanıta yol açar ve API çağrılarını boşa harcar. Uzun yoklama, boş yanıt vermeden önce bir mesajın gelmesini 20 saniyeye kadar bekler. Uzun yoklama maliyetleri önemli ölçüde azaltır (daha az API çağrısı) ve gecikmeyi düşürür (mesaj, sonraki yoklama döngüsünden 20 saniyeye kadar daha erken, gelir gelmez alınır).

Uzun Yoklamayı Etkinleştirme

Uzun yoklamayı kuyruk düzeyinde (tüm alma çağrılarına uygulanır) veya istek başına etkinleştirebilirsiniz. Çoğu uygulama için ReceiveMessageWaitTimeSeconds değerinin 20 olduğu kuyruk düzeyi yapılandırması önerilen ayardır. Lambda, olay kaynağı olarak SQS'yi kullandığında uzun yoklamayı otomatik olarak kullanır. EC2 tabanlı tüketiciler için receive-message çağrısında WaitTimeSeconds değerini ayarlayın.

# Enable long polling at queue level (recommended)
aws sqs set-queue-attributes \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
  --attributes '{"ReceiveMessageWaitTimeSeconds": "20"}'

# Or per-request
aws sqs receive-message \
  --queue-url 'https://...' \
  --wait-time-seconds 20 \
  --max-number-of-messages 10

Mesaj Öznitelikleri ve Filtreleme

SQS mesajları, mesaj gövdesinden ayrı meta veri anahtar-değer çiftleri olan mesaj özniteliklerini taşıyabilir. Özniteliklerin bir türü (String, Number, Binary) ve bir değeri vardır. SQS bir SNS konusuna abone olduğunda, yalnızca ilgili mesajları her kuyruğa yönlendirmek için mesaj özniteliklerine uygulanan SNS abonelik filtre ilkelerini kullanabilirsiniz. Filtreleme olmadan, içeriğinden bağımsız olarak her SQS abonesi her SNS yayınını alır.

Gecikme Kuyrukları ve Mesaj Zamanlayıcıları

Bir Gecikme Kuyruğu, her yeni mesajı gönderildikten sonra bir gecikme süresi boyunca (0 ila 15 dakika) görünmez hâle getirir. Bu, bir tüketicinin mesajı hemen işlememesi gereken iş akışlarında, örneğin önce bağımlı bir işlemin tamamlanmasını beklerken kullanışlıdır. Ayrıca gönderme çağrısında DelaySeconds kullanarak mesaj başına gecikme ayarlayabilirsiniz; bu değer kuyruk düzeyindeki gecikmeyi geçersiz kılar. Not: Gecikme kuyrukları FIFO kuyruklarında kullanılamaz.

# Create a delay queue (5 minute delay)
aws sqs create-queue \
  --queue-name 'DelayedProcessingQueue' \
  --attributes '{"DelaySeconds": "300"}'

Hızlı Kontrol

Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Visibility Timeout, işleme sırasında bir mesajı diğer tüketicilerden gizleyerek en az bir kez teslimi mümkün kılar ve tüketici başarısız olursa otomatik yeniden teslimat gerçekleştirir; Dead-Letter Queues, hata ayıklandıktan sonra hata ayıklama ve yeniden oynatma için tekrar tekrar başarısız olan mesajları yakalar; Long Polling (20 saniyeye kadar bekleme süresi), kısa yoklamaya kıyasla API maliyetlerini ve gecikmeyi azaltır. Sırada SNS konularını ve fan-out mimarisini inceleyeceğiz.

Sıkça Sorulan Sorular

“Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama” dersi ücretsiz mi?

Evet — “Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama” dersinde ne öğreneceğim?

Mesajların iki kez işlenmemesi için görünürlük zaman aşımlarını ayarlayacak, başarısız mesajları ölü mektup kuyruğuna yönlendirecek ve uzun yoklamayla maliyetleri azaltacaksınız. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SQS Standard ve FIFO Kuyrukları
  2. Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama
  3. SNS Konuları ve Fan-Out Mimarisi
  4. SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu
← Cloud & IT Cert Prep Sayfasına Dön