Webhooks ve Mesaj Kuyrukları ile Olay Güdümlü API'ler Nasıl Oluşturulur?

Ashley Innocent

Ashley Innocent

13 March 2026

Webhooks ve Mesaj Kuyrukları ile Olay Güdümlü API'ler Nasıl Oluşturulur?

Özet

Olay tabanlı API'ler harici bildirimler için web kancalarını (webhooks) ve dahili işleme için mesaj kuyruklarını kullanır. Olayları bir kuyruğa (RabbitMQ, Kafka) yayınlayın, eşzamansız olarak işleyin ve web kancaları aracılığıyla istemcileri bilgilendirin. Modern PetstoreAPI, sipariş işleme, envanter güncellemeleri ve ödeme bildirimleri için bu deseni kullanır.

Giriş

Bir müşteri sipariş verir. API'nizin ödeme alması, envanteri güncellemesi, e-posta göndermesi, depoyu bilgilendirmesi ve web kancalarını tetiklemesi gerekiyor. Tüm bunları müşteriyi 10 saniye bekletmek suretiyle eşzamanlı mı yaparsınız? Yoksa hemen yanıt verip eşzamansız olarak mı işlersiniz?

Olay tabanlı API'ler hızlı yanıt verir ve arka planda işleme yapar. Sipariş uç noktası hemen 201 Created döndürür. Olaylar arka plan işlemesini tetikler. Web kancaları, işlem tamamlandığında istemcileri bilgilendirir.

Modern PetstoreAPI, siparişler, ödemeler ve envanter için olay tabanlı mimari kullanır.

Apidog, web kancalarını test etmenize, olay akışlarını doğrulamanıza ve eşzamansız işlemeyi simüle etmenize yardımcı olur.

button

Olay Tabanlı Mimari

Olay tabanlı API'ler, olaylar gerçekleştiğinde yayınlar. Diğer hizmetler abone olur ve tepki verir.

Bileşenler

  1. Olay Üreticisi - Olayları yayınlayan API uç noktası
  2. Olay Veri Yolu/Kuyruğu - Olayları yönlendirir (RabbitMQ, Kafka, SQS)
  3. Olay Tüketicisi - Olayları işleyen arka plan çalışanları
  4. Web Kancaları (Webhooks) - Harici istemcileri bilgilendirir

Akış

İstemci → POST /orders → API
API → "order.created" olayını yayınla → Kuyruk
API → 201 Created döndür → İstemci
Çalışan → Olayı tüket → Siparişi işle
Çalışan → "order.completed" olayını yayınla → Kuyruk
Webhook Çalışanı → Web kancası gönder → İstemci

Harici Olaylar İçin Web Kancaları

Web kancaları, harici istemcileri olaylar hakkında bilgilendirir.

// Publish event when order created
app.post('/v1/orders', async (req, res) => {
  const order = await createOrder(req.body);

  await eventBus.publish('order.created', {
    orderId: order.id,
    userId: order.userId,
    total: order.total
  });

  res.status(201).json(order);
});

// Background worker sends webhooks
eventBus.subscribe('order.completed', async (event) => {
  const webhooks = await getWebhooks(event.userId, 'order.completed');

  for (const webhook of webhooks) {
    await sendWebhook(webhook.url, {
      event: 'order.completed',
      data: event
    });
  }
});

Dahili Olaylar İçin Mesaj Kuyrukları

Mesaj kuyrukları, dahili olay işlemeyi yönetir.

RabbitMQ Örneği

// Publisher
await publishEvent('order.created', { orderId: '019b4132' });

// Consumer
await consumeEvents('order.*', async (event) => {
  await processOrder(event);
});

Modern PetstoreAPI Olay Tabanlı API'leri Nasıl Uygular?

Sipariş İşleme

  1. POST /orders hemen 201 döndürür
  2. order.created olayını yayınla
  3. Ödeme çalışanı ödemeyi işler
  4. Envanter çalışanı stoğu günceller
  5. E-posta çalışanı onay gönderir
  6. Webhook çalışanı istemciyi bilgilendirir

Modern PetstoreAPI olay mimarisine bakın.

Apidog ile Test Etme

Apidog, olay tabanlı API testini destekler:

Sonuç

Olay tabanlı API'ler performansı ve ölçeklenebilirliği artırır. Harici bildirimler için web kancalarını ve dahili işlemeler için mesaj kuyruklarını kullanın. Modern PetstoreAPI, üretim ortamına hazır olay tabanlı desenleri sergiler.

Sıkça Sorulan Sorular

Web kancaları ve mesaj kuyrukları arasındaki fark nedir?

Web kancaları, harici istemcileri HTTP üzerinden bilgilendirir. Mesaj kuyrukları ise dahili hizmet iletişimini yönetir.

Hangi mesaj kuyruğunu kullanmalıyım?

Basitlik için RabbitMQ, yüksek verim için Kafka, yönetilen hizmet için AWS SQS.

Web kancası hataları nasıl ele alınır?

Üstel geri çekilmeyle (exponential backoff) yeniden deneme mantığı uygulayın (web kancası güvenilirliği rehberimize bakın).

Mesaj kuyrukları olmadan olayları kullanabilir misiniz?

Evet, ancak kuyruklar dayanıklılık, yeniden deneme ve ayrıştırma (decoupling) sağlar.

Olay tabanlı API'ler nasıl test edilir?

Web kancalarını test etmek ve olay akışlarını doğrulamak için Apidog'u kullanın.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin

Webhooks ve Mesaj Kuyrukları ile Olay Güdümlü API'ler Nasıl Oluşturulur?