Thanks, nice to hear that I may not be that far off than I initially thought ;)
Maybe I should describe my current (more or less experimental) architecture.
- Worker role, reads commands from mentioned service bus queue, executes command handlers, writes resulting events in event store and publishes them on service bus
- "UI role", hosts the Game UI, receives events from service bus and updates in-memory view store. During role start, the message log (based on Lokad.CQRS Sample message store) is read and the view store is built to the current state.
Service bus is needed because of the two different roles. I don't want to combine the UI and the worker so the alternative would be to utilize the projections / generate the views from the worker and save them to blob storage. In doing that, the service bus may not be needed anymore. But you got me thinking here...my initial reason (well at least partially, in-memory was also just appealing because of speed ;) ) was that I thought I would have a few million instead of ~100k planets, which would result in massive amounts of storage transactions (each planet must have it's own view), since that's not the case anymore blob-based view storage may be an option. But even ~100k view updates would take quite some time.
Another potential problem may be, that later in the development, multiple parallel universes (like tenants, they are more or less dedicated (not quite sure yet)) shall be possible. My fear was, that if one universe gets created (with mentioned ~50-100k messages), the other universes' performance may be drastically reduced. But, like tenants, I guess I could have a command queue for each universe, that should solve that problem.
I am unsure if I fully grasped the concept of bounded concepts yet, but if I have a bounded context "Universe" for the gameplay elements (1 for each universe, like tenants) and 1 BC for all cross-cutting/universe-overlapping elements (chat, accounts) and one queue for each BC (and thus for each universe), the performance shouldn't be a problem.
Sorry for rambling, I have a hard time keeping all the cqrs topics in my mind, maybe I am thinking too much in "old ways" ;)