Messaging and Notifications: Use Cases

Messaging and Notifications: Use Cases

Messaging

Use Cases for a Message Bus

  • Notifications

    • pipeline steps

      • single implementation (for most steps)

        • usage pattern: push-pull pipeline

        • exchange type: direct

        • queues: single queue for each pipeline step, with multiple consumers per queue

      • multiple implementations (e.g., user target resolvers)

        • usage pattern: push-pull pipeline

        • exchange type: direct

        • queues: different queue for each "type" of user-target resolver, with multiple consumers per queue

    • delivery channels

      • usage pattern: pub/sub or push-pull pipeline, depending on channel implementations

      • exchange type: fanout ( ? )

  • Cross-process event handling

    • usage pattern: pub/sub

    • exchange type: direct and/or topic

  • Course publish event (CMS → LMS)

    • usage pattern: request-reply RPC or pub/sub

    • exchange type: default or direct

Messaging Framework Properties

  • message delivery guarantees: at-most-once, at-least-once, exactly-once

  • message durability: persistent or transient

  • message routing: automatic filtering

  • competing or non-competing consumers

  • usage patterns

    • request-reply RPC (pattern: task distribution, topology: service bus)

    • publish-subscribe (pattern: data distribution, topology: data distribution tree)

    • push-pull pipeline (pattern: parallel task distribution and collection, topology: parallelized pipeline)

  • exchanges (per AMQP 0-9-1)

    • types: 

      • default (automatic routing to named queue)

      • direct (route based on message routing key) - usually for unicast in task distribution patterns

      • fanout (broadcast to multiple queues) - usually for broadcast routing in pub/sub patterns

      • topic (route based on match between routing key and queue binding pattern) - usually for multicast in pub/sub patterns

      • headers (route based on any/all match of header values) - "direct on steroids"

    • attributes: name, durability (survive broker restart), auto-delete (deleted when all queues have finished using it)

  • queues

    • attributes: name, durable, exclusive, auto-delete

  • consumers

    • push or pull APIs

    • message acks, rejects, bulk rejects

    • message prefetching

  • messages

    • serialization format: JSON, thrift, protocol buffers, messagepack

    • durability: persistent or ephemeral

Notifications

Uses Cases for notifications

  • Bazaar - time-based activities with intelligent prompting and synchronous chat for learners

  • Discussions

    • forum activity - including notifying moderators and forum participants

    • social awareness

  • Course Dates

  • Course Announcements

  • User Progress in course

  • Analytics Use cases:

    • Instructors reaching out to learners

    • Automatically notifying/supporting struggling learners

    • Verified upgrade reminders (+ @Jasper Ho @Deen Abdul-Hathi (Deactivated))