title: Messaging Confusion: Pub/Sub vs Multicast vs Fan Out
body: <p>I've been evaluating messaging technologies for my company but I've become very confused by the conceptual differences between a few terms:</p>
  
  <p><strong>Pub/Sub</strong> vs <strong>Multicast</strong> vs <strong>Fan Out</strong>
  I am working with the following definitions:</p>
  
  <ul>
  <li><strong>Pub/Sub</strong> has publishers delivering a separate copy of each message to
  each subscriber which means that the opportunity to guarantee delivery exists</li>
  <li><strong>Fan Out</strong> has a single queue pushing to all listening
  clients. </li>
  <li><strong>Multicast</strong> just spams out data and if someone is listening
  then fine, if not, it doesn't matter.  No possibility to guarantee a client definitely gets a message.</li>
  </ul>
  
  <p>Are these definitions right?  Or is Pub/Sub the pattern and multicast, direct, fanout etc. ways to acheive the pattern?</p>
  
  <p>I'm trying to work the out-of-the-box RabbitMQ definitions into our architecture but I'm just going around in circles at the moment trying to write the specs for our app.</p>
  
  <p>Please could someone advise me whether I am right?</p>