Sure.
I am building a distributed system based on cassandra.
This system of course has no joins so data needs to be distributed sometimes to several locations to ensure consistency.
In order to achieve this there is a common distributed data service which takes all changes and puts them into 3 initial queues.
EntityChange
EntityFieldChange
EntityMerge
An operation is not complete until it is in the DB and message in queue.
Each of the 3 queues is then read and broken into any number of sub queues.
For instance if EntityFieldChange indicated field X was changed then queue messages for the appropriate tables would be created like:
EFC_Table1_FieldX
EFC_Table2_FieldX
Lastly each of those messages can be broken into further components to help distribute some of the extra processing.
For instance 1 DB change could require 100k records to be altered.
There are:
3 level 1 queues
~400 level 2 queues
~300 level 3 queues
I am currently using the same name for topic/channel which may be a bad thing in NSQ.
However I didn't want to rely on an implementation detail like that in case I needed to change queues.
Some queues are heavily changed while others are barely touched.
I am open for any suggestions you may have.
Thanks.