This is wonderful! I'm really interested in the distributed element of it. I understand riak core uses epidemic broadcast trees to provide consistency, but do you have a good example in how this would influence a microservice architecture?
Epidemic broadcast that you mention, usually happens when you have a fully connected topology and distribution model works with full replication. But the main advantage with riak_core is that you are able to set the replication factor and quorums, which enables you to setup different distribution models --like sharding or peer-to-peer replication + sharding (common case)-- and balance consistency/availability levels --please review CAP theorem (http://www.julianbrowne.com/article/viewer/brewers-cap-theor...).
In case of ErlBus, you can also set these parameters (replication factor and quorums), even the quorum of each operation (sub, pub, unsub, subscribers, etc.) can be set independently. So riak_core gives you the flexibility to choose the best distribution model depending on what you really need, and ErlBus inherits those features when you run it on top of riak_core.
So, you have to consider some variables to choose what distribution model to use:
1. Number of nodes
2. Network traffic (Messages/second)
3. Number of subscriptions (because both pg2 and gproc uses ETS tables)
Most of the cases is enough default ErlBus with PG2, but if you need a more flaxible and scalable distribution model, well, you probably should go for ErlBus with riak_core.
I really hope have answered your question, otherwise, you just let me know.
Good suggestion, I'll do that! Because there are significant differences between them, and the purpose of ErlBus isn't compete with RabbitMQ at all, they are different tools to drive different problems, so is very important highlight these differences. Thanks!!