Describe how you would build a greenfield distributed message queue. What consensus protocols would you consider, and why?