/qimb

Primary LanguageTypeScriptMIT LicenseMIT

QIMB

QIMB is a zero management, platform agnostic message bus.

  • Serverless architecture powered 100% on AWS services such as SQS, SNS and Lambda
  • Zero management
  • Easy setup
  • Cross platform
  • Publish/Subscribe pattern (multicast and unicast message without knowing subscribers)
  • Direct message (unicast to known receiver)
  • Guarantied message delivery
  • Push delivery (using http hooks)
  • Pull delivery
  • Scaleable
  • Fault tolerant

Delivery semantics

Icons

Application AWS API Gateway AWS Lambda AWS SNS AWS SQS HTTP Request
Application AWS API Gateway AWS Lambda AWS SNS AWS SQS HTTP Request

Publish/Subscribe Multicast

  1. Subscribers subscribe to Message Types (Red, Orange, Purple)
  2. Publishers send messages to QiMB using the Message Type
  • Publishers do not know the subscribers (or if there are any)
  1. Message gets delivered to all subscribers of the Message Type
  • If there are no subscribers when message is published, the message will never be delivered
  • All subscribers are guarenteed to receive the message
  • Messages may be delivered out of order

Publish Subscribe

Push Delivery

  • Multicast messages can optionally be delivered through a HTTP web hook to decrease latency
    • Approx 150 - 250 ms latency

Direct Message

Publish/Subscribe Unicast

  1. Subscribers subscribe Message Types to Buckets
  • e.g. Message Type "OrderCompleted" to Bucket "OrderDetails"
  1. Publishers send messages to QiMB using the Message Type
  • Publishers do not know the subscribers (or if there are any)
  1. Message gets delivered to one subscriber of the Bucket
  • If there are no subscribers when message is published, the message will eventually be delivered
  • Only one subscriber is guarenteed to receive the message
  • Messages may be delivered out of order

Direct Message

Direct Message

  1. Subscribers subscribe to Direct Messages
  2. Publishers send messages to QiMB using the Node ID of the subscriber
  • Publishers needs to know the subcriber
  1. Message gets delivered to the subscriber with the Node ID
  • If there are no subscribers when message is published, the message will eventually be delivered
  • Message is guarenteed to be delivered to the subscriber
  • Messages may be delivered out of order

Direct Message

Build deployment package with SAM

  • Build the visual studio solution
  • Open \Qimb.Framework\package in command line and use the AWS cli to build a deployment package
aws cloudformation package --template-file app.yaml --output-template-file CloudFormationTamplate.yml --s3-bucket [s3-bucket] --profile [profile]
  • Deploy the generated file CloudFormationTamplate.yml using CloudFormation