MicrocosmWorksDijital Kozmosu Yenilikçi ve Mimari Olarak Tasarlamak
Hakkındaİletişim
MicrocosmWorksDijital Kozmosu Yenilikçi ve Mimari Olarak İnşa Etmek

Önemli BT çözümleri sunuyoruz. Teknoloji, güvenlik ve işletmelerin güvenilir, yenilikçi BT altyapısı ile büyümesine yardımcı olmaktan tutkuluyuz.

[email protected]
+91 7011868196
New Delhi, India

AI Büyüme Merkezi

AI MerkeziStartup İnovasyonuKurumsal Hızlandırıcı

Çözümler

Tüm ÇözümlerSağlık ve Fitness UygulamalarıAI Video PlatformuAI Ajan Geliştirme

Kaynaklar

ÖngörülerSektör RehberleriKullanım Durumu ŞablonlarıMimari KalıplarVaka Çalışmaları

Şirket

HakkımızdaİletişimÇalışmalarımız

Hizmetler

Dijital DanışmanlıkBulut AltyapısıSaaS GeliştirmeYapay Zeka GeliştirmeVideo Teknolojisi
ERP GeliştirmeZoho ÖzelleştirmeOdoo GeliştirmeSalesforce EntegrasyonuÖzel CRM Geliştirme
QuickBooks EntegrasyonuIoT ÇözümleriBlokzincir Geliştirme
Siber Güvenlik DanışmanlığıIT Desteği - L3

© 2026 MicrocosmWorks. Tüm hakları saklıdır.

Gizlilik PolitikasıHizmet Şartları
Öngörülere Geri Dön
AI Development

Güvenilir Saat Dilimi Bilgili Anlık Bildirim Sistemleri Oluşturma

Her kullanıcı için doğru yerel saatte, güvenilir bir şekilde bildirim gönderen bir anlık bildirim sistemi tasarlamak.

Mayank Joshi.webpMayank Chandra Joshi
•
July 31, 2026
•
Güncellendi August 19, 2026
•
5 min read
Untitled design (16).webp
5 min read

Güvenilir, Saat Dilimi Bilgili Bir Anlık Bildirim Sistemi Oluşturma

Bir sağlık ve zindelik uygulaması, dünya genelindeki binlerce kullanıcıya kişiselleştirilmiş günlük anımsatıcılar (yemek hatırlatıcıları, ruh hali kontrolü, hidrasyon ipuçları, uyku işaretleri ve özel hatırlatıcılar) göndermek zorundaydı. İşin püf noktası: her bildirim doğru yerel saatte, kesinlikle bir kez ve asla ölü bir cihaza ulaşmamalıydı. Bunu sağlayan dağıtılmış boru hattını tasarladık ve inşa ettik.

 

Zorluk

  • Ölçekte saat dilimi doğruluğu. Bir "sabah 9 kahvaltı hatırlatıcısı" her kullanıcı için farklı bir anlama gelir. Sunucu saatine göre göndermek, Sidney'deki birine sabah 3'te bildirim gönderirdi. Her bildirimin kullanıcının yerel anına çözümlenmesi gerekiyordu.
  • Spam yok, tekrar yok. Cron görevlerinin zamanlaması kaçınılmaz olarak çakışır ve tekrar çalışır. Katı garantiler olmaksızın, tek bir kullanıcı aynı "öğle yemeği zamanı 🥗" anımsatıcısını iki veya üç kez alabilirdi — bu da hızlıca uygulamanın kaldırılmasına yol açardı.
  • Cihazlar güvenilmezdir. Kullanıcılar uygulamaları kaldırır, izinleri iptal eder ve push tokenlarını sürekli olarak değiştirir. Eski tokenlara körü körüne bildirim göndermek kaynakları boşa harcar ve teslimat metriklerini bozar.
  • Kaba kuvvet zamanlayıcı olmadan hassas zamanlama. Her 60 saniyede bir veritabanını zorlayan bir cron olmadan, yüzlerce bildirimi tam dakikasında teslim etmek, basit yoklamadan daha akıllı bir mekanizma gerektiriyordu.

 

Çözümümüz

Ne gönderileceğini, ne zaman gönderileceğini ve gerçekten gönderilmesini net bir şekilde ayıran üç aşamalı bir boru hattı inşa ettik; böylece her aşama bağımsız olarak başarısız olabilir ve kurtarılabilir. Veritabanı doğruluk kaynağıdır, bir mesaj kuyruğu hassas zamanlamayı yönetir ve tek bir worker katmanı push sağlayıcısı ile iletişim kurar.

image.webp

 

Mimari

  • Expo-notifications, hem iOS hem de Android için tek bir token formatı ve teslimat API'si kullanan, yerel kanallara, benzersiz seslere ve derin bağlantılara sahip bir React Native istemcisidir.
  • FCM ve APNs üzerinde birleşik bir push soyutlaması olarak expo-server-sdk ile NestJS arka ucu.
  • Doğruluk kaynağı olarak MongoDB — NotificationMessage, NotificationToken ve NotificationCounter koleksiyonları.
  • Hassas zamanlanmış teslimat için her kategoriye (yemek, ruh hali, aktivite, güvenlik, hatırlatıcılar) özel ActiveMQ (STOMP) gecikme kuyrukları.
  • Kullanıcı başına saat dilimi çözümlenmiş bildirim kayıtları oluşturan Creator cron görevleri.
  • Her kuyruğa abone olan ve göndermeden önce son doğrulama yapan Tüketici worker'ları.
  • Cron'ları ve tüketicileri çalıştıran AWS ECS Fargate; özel bir EC2 örneğinde ActiveMQ.

 

Temel Özellikler

  1. Saat dilimi bilgili zamanlama. date-fns-tz kullanarak, her kullanıcının yerel gönderme zamanı hesaplanır, depolama için UTC'ye geri dönüştürülür ve günde bir anımsatıcı garantilemek için UTC tarih aralıkları ile sınırlanır.
  2. Veritabanı tarafından uygulanan idempotentlik. Bekleyen mesajlar üzerindeki kısmi benzersiz bir dizin, bir cron iki kez çalışsa bile mükerrer oluşturmayı imkansız hale getirir:
// Unique only while the message is still PENDING and not deleted

schema.index(

  { userId: 1, notificationTokenId: 1, category: 1, label: 1, scheduledAt: 1 },

  { unique: true, partialFilterExpression: { status: 'pending', isDeleted: false } }

);

 

3. Gecikme kuyrukları aracılığıyla hassas teslimat. Dakika başına bir cron yerine, zamanlayıcı mesajları şimdi kuyruğa alır, ancak teslimatı ActiveMQ'nun scheduled-delay başlığını kullanarak tam vadesi gelen dakikaya erteler:
 

client.send(`/queue/${queueName}`, {

  persistent: 'true',

  'AMQ_SCHEDULED_DELAY': String(delayMs), // delivered exactly when due

}, JSON.stringify(message));

 

4. Cihaz başına tek aktif token. Kısmi benzersiz bir dizin, cihaz başına tam olarak bir aktif token garanti eder; yeni girişler eski tokenı düzgün bir şekilde devre dışı bırakır ve eşzamanlı oturum açma işlemlerine dayanmak için üstel geri çekilme denemeleri kullanılır.

5. Makbuz kontrolü + otomatik temizleme. Gönderdikten sonra Expo makbuzlarını sorgularız. Bir DeviceNotRegistered yanıtı, ölü tokenı hemen devre dışı bırakır, böylece bir daha ona gönderim yapmayız.

f (receipt.status === 'error' &&

    receipt.details?.error === 'DeviceNotRegistered') {

  await this.deactivateToken(token); // stop sending to dead devices

}

 

6. Hata sınırı. Her cihazın bir tekrar deneme sayacı vardır; art arda 3 başarısızlıktan sonra token otomatik olarak devre dışı bırakılır — sonsuz döngüler yok, zombi tokenlar yok.

7. Gönderim anında kullanıcı niyetine saygı. Bildirim tercihi, yalnızca zamanlamada değil, teslimat anında tüketici tarafından yeniden kontrol edilir — böylece bir anımsatıcıdan bir saat önce vazgeçen bir kullanıcı asla onu almaz. Mesajlar dürüst terminal durumlarına çözümlenir: success, failed veya is_missed.

 

Sonuçlar

  • Her kullanıcı, dünya genelinde doğru yerel saatte anımsatıcılar alır — mesai saatleri dışında bildirim yok.
  • Veritabanı düzeyinde idempotentlik sayesinde mükerrer bildirimler tamamen ortadan kaldırıldı.
  • Ölü ve eski cihaz tokenları otomatik olarak tespit edilir ve devre dışı bırakılır, böylece teslimat temiz kalır.
  • Kaba kuvvet zamanlayıcı olmadan hassas, dakik doğru teslimat ile güvenilirlik artırıldı ve veritabanı yükü azaltıldı.

 

Teknoloji Yığını

React Native · Expo Notifications · NestJS · TypeScript · MongoDB · ActiveMQ (STOMP) · expo-server-sdk · date-fns-tz · AWS ECS Fargate

Anlık BildirimlerSaat DilimleriZamanlamaGüvenilirlik
Mayank Joshi.webp

Yazar Hakkında

Mayank Chandra Joshi

AI & Cloud Solutions Expert at MicrocosmWorks

Building innovative AI-powered solutions and helping businesses transform through cutting-edge technology.

Daha fazla bilgi edinmek ister misiniz?

Bu çözümleri işletmeniz için nasıl uygulayabileceğimizi tartışmak için bizimle iletişime geçin.

İletişime Geçin

Sıkça Sorulan Sorular

A timezone-aware notification system converts each user's local schedule into UTC before delivery, ensuring reminders arrive at the correct local time regardless of the user's location or daylight saving changes.

Database-level idempotency using unique indexes ensures each scheduled notification is created only once, even if scheduling jobs are retried or executed multiple times.

Delayed message queues deliver notifications at the exact scheduled time without constantly polling the database, improving delivery accuracy while reducing infrastructure load.

A reliable push notification system validates delivery receipts and automatically deactivates expired or unregistered device tokens, preventing failed notifications and improving delivery success rates.

A scalable push notification system combines timezone-aware scheduling, delayed message queues, idempotent database design, token lifecycle management, and delivery validation to ensure accurate and reliable notification delivery.

Comments (0)

Share your thoughts and join the conversation

Leave a Comment

Your email will not be published

No comments yet

Be the first to share your thoughts!