An asynchronous push message queue proof-of-concept written in Go. This POC makes use of gRPC, protocol buffers, goroutines, and channels.

Draft Diagram


In this proof-of-concept, the following features of a message queue are attempted to be implemented.


Messages may be kept in memory, written to disk, or even committed to a DBMS if the need for reliability indicates a more resource-intensive solution.

Security policies

Which applications should have access to these messages?

  • TBD

Message purging policies

Queues or messages may have a “time to live”.

  • Add ttl to messages
  • Support Dead letter queues

Message filtering

Filtering data so that a subscriber may only see messages matching some pre-specified criteria of interest.

Delivery policies

Able to guarantee that a message is delivered at least once, or no more than once.

Routing policies

System should be able to route a message or a queue’s messages.

Batching policies

System should support batching – should messages be delivered immediately? Or should the system wait a bit and try to deliver many messages at once?

Receipt notification

A publisher may need to know when some or all subscribers have received a message.


View Github