title: Communication among microservices: Apache Kafka vs Hazelcast's Topic
body: <p>Disclaimer.
  I have experience with <a href="https://hazelcast.com/" rel="nofollow noreferrer">Hazelcast</a> and <a href="http://vertx.io/" rel="nofollow noreferrer">Vert.x</a>. I'm new to <a href="https://kafka.apache.org/" rel="nofollow noreferrer">Apache Kafka</a>. Sorry if my question look preconceived, it's not.</p>
  
  <p>There are two widespread ways to arrange communication among microservices: REST and messaging. In my region, when someone says they're using messaging for communication among microservices - it de facto means Apache Kafka. </p>
  
  <p>I am interested to know why Apache Kafka is better fit for communication needs among microservices than Hazelcast's Topic? Is it better? Because of which guarantees, features or architecture decisions?</p>
  
  <p>The Hazelcast's example for cluster wide messaging looks as following:</p>
  
  <pre><code>// node #1
  Hazelcast.newHazelcastInstance()
           .getTopic("topic")
           .publish(new Date());
  
  // node #2
  Hazelcast.newHazelcastInstance()
           .getTopic("topic");
           .addMessageListener(message -&gt; /*Do something here*/);
  </code></pre>
  
  <p>Also there is Vert.x (very roughtly speaking actors framework) written on top of Hazelcast's topics and member discovery.</p>
  
  <p><em>Is Kafka messaging better for communication among microservices?</em></p>