Kafka Events

22 event topics (11 producer + 11 consumer) across the notification delivery pipeline.

Event Format: CloudEvents 1.0

All events follow the CloudEvents 1.0 specification. Events are partitioned by tenant_id and published to Amazon MSK Serverless. Idempotency enforced via Redis with 24h TTL.

Brokers

EnvironmentBroker
Stagingb-1.eventzr-msk.ap-south-1.amazonaws.com:9098
Productionb-1.eventzr-msk-prod.ap-south-1.amazonaws.com:9098

CloudEvents Envelope

CloudEvents 1.0 envelopejson
{
  "specversion": "1.0",
  "type": "eventzr.notify.sent.v1",
  "source": "eventzr.notify-svc",
  "id": "evt-550e8400-e29b-41d4-a716-446655440000",
  "time": "2026-02-24T12:00:00.000Z",
  "datacontenttype": "application/json",
  "subject": "tenant-uuid",
  "data": {
    "tenantId": "tenant-uuid",
    "notificationId": "notif-uuid",
    "channel": "email",
    "userId": "user-uuid",
    "templateId": "template-uuid",
    "priority": "high"
  }
}

Producer Topics (11)

Events published by notify-svc when notification state changes occur. Downstream consumers: analytics-svc, wallet-svc, inbox-svc, audit-svc, crm-svc, amplify-svc, search-svc.

Delivery Lifecycle7

TopicDescription
eventzr.notify.sent.v1Notification sent to CPaaS provider
eventzr.notify.delivered.v1Delivery confirmed by provider
eventzr.notify.failed.v1All retries exhausted
eventzr.notify.bounced.v1Hard/soft bounce from provider
eventzr.notify.read.v1Recipient opened notification
eventzr.notify.cost_incurred.v1CPaaS cost recorded
eventzr.notify.suppressed.v1Notification suppressed (opt-out, bounce, suppression list)

Template Lifecycle3

TopicDescription
eventzr.notify.template.created.v1Template created
eventzr.notify.template.updated.v1Template updated
eventzr.notify.template.deleted.v1Template soft-deleted

Preference Changes1

TopicDescription
eventzr.notify.preference.updated.v1User preferences changed

Consumer Topics (11)

Events consumed from 6 upstream services to trigger notifications.

auth-svcGroup: notify-svc-auth-consumer

TopicDescriptionSLA
eventzr.auth.otp.requested.v1Send OTP via preferred channel10s (CRITICAL)

booking-svcGroup: notify-svc-booking-consumer

TopicDescriptionSLA
eventzr.booking.confirmed.v1Send booking confirmation1min (HIGH)
eventzr.booking.checkin_time.v1Send check-in reminder (T-24h)1min (HIGH)

event-svcGroup: notify-svc-event-consumer

TopicDescriptionSLA
eventzr.events.published.v1Notify followers about new event5min (NORMAL)
eventzr.events.updated.v1Notify ticket holders about changes1min (HIGH)
eventzr.events.cancelled.v1Notify holders with refund info1min (HIGH)

invite-svcGroup: notify-svc-invite-consumer

TopicDescriptionSLA
eventzr.invite.sent.v1Send event invitation5min (NORMAL)

ticketing-svcGroup: notify-svc-ticketing-consumer

TopicDescriptionSLA
eventzr.ticketing.ticket.purchased.v1Send ticket confirmation + QR code1min (HIGH)
eventzr.ticketing.ticket.transferred.v1Notify both parties of transfer1min (HIGH)

wallet-svcGroup: notify-svc-wallet-consumer

TopicDescriptionSLA
eventzr.wallet.transaction.completed.v1Send payment receipt1min (HIGH)
eventzr.wallet.balance.low.v1Send low balance alert1min (HIGH)